GDPU 小试牛刀

news2025/1/12 0:53:48

自由发挥,尽力就行,答案无标准,你就是唯一!

Take it easy!


前端

1. HTML

请问HTML的全称是什么?

Hyper Text Markup Language 超文本标记语言

2. 文档流

请谈一谈你对文档流的理解?言简意赅最好

在前端开发中,文档流(Document Flow)指的是HTML文档中元素按照其在DOM(文档对象模型)中的先后顺序依次排列的方式。文档流决定了元素在页面中的位置及其相互之间的关系
文档流分为两种类型:正常流(Normal Flow)和浮动流(Float Flow)。

在正常流中,元素按照其在DOM树中的先后顺序从上到下依次排列。在这种布局方式下,元素默认按照块级元素(block)或内联元素(inline)的特性进行排列,块级元素会占据一整行,而内联元素则会在同一行内按照从左到右的顺序排列。

而浮动流中,元素可以通过设置浮动属性(float)来脱离正常流,使得其他元素可以环绕在其周围。浮动元素会向左或向右移动,直到遇到父级元素的边界或其他浮动元素,从而改变其在页面中的位置。

3. 拓展:塌陷

请设计一个由于脱离文档流出现塌陷问题的前端页面。


✨ 参考代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>塌陷</title>
    <style>
        .outer {
            width: 500px;
            background-color: aliceblue;
            border: 1px solid black;
            /* 解决方式 1 */
            /* float: left; */
            /* 解决方式 2 */
            /* height: 130px; */
            /* 解决方式 3 */
            /* overflow: hidden; */
        }

        .box {
            width: 100px;
            height: 100px;
            background-color: beige;
            border: 1px solid black;
            margin: 10px;
            float: left;
        }
        /* 解决方式 4 */
        /* .mofa {
            clear: both;
        } */
        /* 解决方式 5 */
        /* .outer::after {
            content: '';
            display: block;
            clear: both;
        } */
    </style>
</head>
<body>
    <div class = "outer"> 
        <div class = "box">1</div>
        <div class = "box">2</div>
        <div class = "box">3</div>
        <!-- <div class="mofa"></div> -->
    </div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述


算法

1. 排序

请简述你最喜欢的排序算法思想。


以下问题需编写程序,语言不限,支持 c、c++、java、python、go、js 等
当热,实在不会,也可以以文字的形式谈谈你的思路

2. A+B

输入两个整数,求这两个整数的和是多少。

输入格式

输入两个整数 A , B A, B A,B,用空格隔开

输出格式

输出一个整数,表示这两个数的和

数据范围

0 ≤ A , B ≤ 1 0 8 0 \le A, B \le 10 ^ 8 0A,B108

样例输入:

3 4

样例输出:

7

✨ 参考代码

#include <iostream>
using namespace std;
int main()
{
	int a,b;
	cin >> a >> b;
	cout << a + b << endl;
	return 0;
}

3. 自幂数

在十进制中,一个n位自然数等于自身各个数位上数字的n次幂之和,则称此数为自幂数。

例如:153是一个三位数,各个数位的3次幂之和为 1 3 + 5 3 + 3 3 = 153 1^3 +5^3+3^3=153 13+53+33=153,所以153是十进制中的自幂数。1634是一个四位数,各个数位的4次幂之和为 1 4 + 6 4 + 3 4 + 4 4 = 1634 1^4+6^4+3^4+4^4 = 1634 14+64+34+44=1634,所以1643也是十进制中的自幂数。

现在要求输出所有在 m m m n n n 范围内的自幂数。

输入格式

输入包含多组测试数据。

每组数据占一行,包含两个整数 m m m n n n

最后一行 0 0 表示输入结束。

输出格式

每组数据输出一行答案,从小到大输出所有位于 [m,n] 范围内的自幂数,数之间用空格隔开,如果没有则输出 no

数据范围

0 < m ≤ n ≤ 1 0 10 0 \lt m \le n \le 10^{10} 0<mn1010

输入样例:

100 120 
8 10000
-1

输出样例:

no
8 9 153 370 371 407 1634 8208 9474

✨ 朴素版

#include <iostream>
#include <algorithm>
#include <math.h>

using namespace std;
long mi[11][11];//mi[底数][指数] 初始化默认为0
long num[11];

void 初始化幂数组()
{
//	注意:0 的 0 次方是0,其他数的 0 次方是 1
	for(int i = 1; i < 11; i++) mi[i][0] = 1;
	
	for(int i= 1; i < 11 ;i++){
		for(int j = 1; j < 11; j ++)
			mi[i][j] = mi[i][j-1] * i;
	}
}

bool 是否自幂(int x)
{
	int cnt = 0;
	int t = x;
	while(t){
		t /= 10;
		cnt++;
	}
	long ans = 0;
	t = x;
	while(t){
		int xx = t % 10;
//		朴素版 运行时间:约30分钟
//		ans += pow(xx,cnt); //重复计算过多
		
//		预处理幂指数的计算结果版:约180S
		ans += mi[xx][cnt];
		t /= 10;
	}
	if(ans == x)
		return true;
	return false;
}

void cal(long m,long n)
{
	bool flag = false;
	for(long i = m; i <= n; i++)
	{
		if(是否自幂(i))
		{
			cout << i << " ";
			flag = true;
		}
	}
	if(!flag)
		cout << "no";
	cout << endl;
}


int main()
{
	long m,n;
	初始化幂数组();
	while(1){
		cin >> m >> n;
		if(!m && !n)
			break;
		cal(m,n);
	}
	return 0;
}

✨ 优化版

#include<cstdio>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;

int n,m, a[20], f[20], cnt; // n是位数,a用来存放当前数字的各个位上的数字,f用来统计当前数字的各个位上的数字出现的次数,cnt是结果的个数
ll ans[1000]; // 存放结果

// 快速幂运算
ll poww(int a, int b) {
	ll ans = 1, base = a;
	while (b != 0) {
		if (b & 1 != 0) // 判断是否为奇数
			ans *= base;
		base *= base;
		b >>= 1; // 右移一位,相当于除以2
	}
	return ans;
}

// 计算数字的位数
int calc(ll sum) {
	ll t = sum;
	int num = 0;
	memset(f, 0, sizeof(f)); // 将数组f初始化为0
	while (t) {
		ll tmp = t % 10; // 取最低位
		t /= 10; // 右移一位,相当于除以10
		f[tmp] ++;
		num++;
	}
	return num;
}

// 深度优先搜索
void 暴搜(int ps, int hs, ll sum, double dbsum) {
	if (ps == 9) { // 已经填充到最高位
		a[ps] = hs;
		sum += (ll)hs*poww(9, n); // 计算当前数字的值
		dbsum += (double)hs*poww(9, n);
		if (dbsum <= 1e19 && sum > 0) { // 检查是否在ll类型的范围内,同时sum要大于0
			if (calc(sum) == n) { // 检查位数是否符合要求
				bool flag = 1;
				for (int i = 0; i <= 9; i++) {
					if (f[i] != a[i])flag = 0; // 检查各个位上的数字次数是否符合要求
				}
				if (flag)ans[cnt++] = sum; // 符合要求则存入结果数组
			}
		}
		return;
	}
	for (int i = 0; i <= hs; i++) {
		a[ps] = i; // 当前位填充的数字为i
		暴搜(ps + 1, hs - i, sum + (ll)i*poww(ps, n), dbsum + (double)i*poww(ps, n)); // 递归填充下一位
	}
}

void 打表()
{
	ans[cnt++] = 0;//突然发现 0 也是自幂数
//	提前计算出 1~12位的所有自幂数
	for(n = 0; n <= 12; n++)
		暴搜(0, n, 0, 0);
	sort(ans, ans + cnt);
}
int main() {
	打表();
	ll n,m;
	while(1){
		cin >> m >> n;
		if(m == 0 && n == 0)
			break;
		bool flag = false;
		for(int i = 0; i < cnt; i++)
			if(ans[i] >= m && ans[i] <= n)
			{
				flag = true;
				cout << ans[i] << " ";
			}
		if(!flag)
			cout << "no";
		cout << endl;
	}
	return 0;
}

👨‍🏫 参考题解

4. 拓展:炸弹

🍑 洛谷在线评测地址
🍑 CodeForce原题地址


弗卢伊在斯诺登埋了炸弹

炸弹的计时器初始设置为 b b b。每秒钟,计时器都会减少 1 1 1。当计时器达到 0 0 0时,炸弹就会爆炸!为了让斯诺丁的居民有足够的时间撤离,你需要尽可能延长炸弹爆炸的时间。

您有 n n n 种工具。每种工具最多只能使用1次。如果你使用了第 i 个工具,计时器会增加 x i x_i xi。但是,如果将计时器更改为大于 a a a的整数,由于一个错误,计时器将被设置为 a a a

更具体地说,以下事件将按照以下顺序每秒发生一次:

  1. 您将选择一些(可能没有)之前未使用过的工具。如果您选择了第 i 个工具,而炸弹的计时器当前设置为 c c c,那么计时器将变为 min ⁡ ( c + x i , a ) \min(c + x_i, a) min(c+xi,a)
  2. 计时器会减少 1 1 1
  3. 如果计时器达到 0 0 0,炸弹就会爆炸。

水母现在想知道,如果优化使用这些工具,炸弹爆炸前的最长时间(以秒为单位)是多少。

输入

每个测试包含多个测试用例。第一行包含测试用例的数量 t t t ( 1 ≤ t ≤ 2000 1 \leq t \leq 2000 1t2000)。测试用例说明如下。

每个测试用例的第一行包含三个整数 a a a b b b n n n 1 ≤ b ≤ a ≤ 1 0 9 1 \leq b \leq a \leq 10^9 1ba109 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100),分别为炸弹计时器的最大值、炸弹计时器的初始值和工具数量。

每个测试的第二行包含 n n n 个整数 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn 1 ≤ x i ≤ 1 0 9 1 \leq x_i \leq 10^9 1xi109),分别为通过使用 i i i-th 工具,计时器可以增加的数量。

请注意,所有测试用例的 n n n之和是不受约束的。

输出

对于每个测试用例,输出一个整数表示炸弹爆炸前的最长时间(以秒为单位)。

样例输入:

2
5 3 3
1 1 7
7 1 5
1 2 5 6 8

样例输出:

9
21

提示

c c c 表示炸弹定时器的值。在第一个测试案例中

  • 第二个 1 1 1:在这一秒选择工具 1 1 1 2 2 2,然后是 c = 5 c=5 c=5;计时器减少 1 1 1,然后是 c = 4 c=4 c=4
  • 第二个 2 2 2:计时器依次递减 1 1 1 c = 3 c=3 c=3
  • 第二次 3 3 3:计时器依次递减 1 1 1 c = 2 c=2 c=2
  • 第二次 4 4 4:计时器依次递减 1 1 1 c = 1 c=1 c=1
  • 第二个 5 5 5:选择工具 3 3 3,然后 c = 5 c=5 c=5;计时器依次减少 1 1 1,然后 c = 4 c=4 c=4
  • 第二次 6 6 6:计时器依次递减 1 1 1 c = 3 c=3 c=3
  • 第二个 7 7 7:计时器依次递减 1 1 1 c = 2 c=2 c=2
  • 第二次 8 8 8:计时器依次递减 1 1 1 c = 1 c=1 c=1
  • 第二次 9 9 9:计时器减少 1 1 1,然后 c = 0 c=0 c=0。炸弹爆炸。

可以证明,没有办法使用工具使炸弹在超过 9 9 9秒后爆炸。

✨ 参考代码

#include<iostream>
#include<math.h>

using namespace std;

typedef long long ll;

int main()
{
	int T;
	cin >> T;//测试案例数
	while(T--){
		int a;//计时器的最大值
		int b;//计时器的初始值
		int n;//工具的数量
		cin >> a >> b >> n;
		ll ans = b;//炸弹爆炸前的最长时间(记得开long long)
		for(int i = 0; i < n; i++)//输入n个工具
		{
			int time;//工具可以延长的时间
			cin >> time;
			ans += min(a-1,time);
		}
		cout << ans << endl;
	}
	
	return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170560.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows下tomcat控制台按天输出catalina.out日志

windows下tomcat控制台按天输出catalina.out日志 方法一方法二 windows服务器情况下&#xff0c;无法和linux服务器一样&#xff0c;启动web服务之后&#xff0c;直接tail查看日志&#xff0c;而windwos控制台的输出空间有限&#xff0c;如果遇到大量错误的情况下&#xff0c;c…

JVM离线分析-使用MAT分析dump堆文件

1. MAT&#xff08;Memory Analyzer Tool&#xff09;的介绍 官方介绍 The Eclipse Memory Analyzer is a fast and feature-rich Java heap analyzer that helps you find memory leaks and reduce memory consumption. Use the Memory Analyzer to analyze productive heap …

CodeWhisperer 的使用心得

文章作者&#xff1a;小SS 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术推荐给全球云社…

第9章_子查询

文章目录 1 需求分析与问题解决1.1 实际问题1.2 子查询的基本使用1.3 子查询的分类1.3.1 分类方式11.3.2 分类方式2 1.4 演示代码 2 单行子查询2.1 单行比较操作符2.2 代码示例2.3 HAVING中的子查询2.4 CASE中的子查询2.5 子查询中的空值问题2.6 非法使用子查询演示代码 3 多行…

错误页 模板

下载链接&#xff1a;https://ext.dcloud.net.cn/plugin?id15229 http://下载链接&#xff1a;https://ext.dcloud.net.cn/plugin?id15229 如有问题可添加下方名片

Day39 QTableWidget类的使用

1.简介 介绍QtableWidget各种属性的用法&#xff0c;以及常用的一些信号&#xff0c;最后利用这些特性&#xff0c;制作一个用于下发设备运行参数的表格。该表格可以实现折叠和取消折叠&#xff0c;在源代码中用了事件过滤器实现&#xff0c;也可以用自带的click信号。显示了图…

我用 LangChain 打造自己的 LLM 应用项目

随着LLM的技术发展&#xff0c;其在业务上的应用越来越关键&#xff0c;通过LangChain大大降低了LLM应用开发的门槛。本文通过介绍LangChain是什么&#xff0c;LangChain的核心组件以及LangChain在实际场景下的使用方式&#xff0c;希望帮助大家能快速上手LLM应用的开发。 技术…

二叉树采用二叉链表存储:编写计算二叉树最大宽度的算法(二叉树的最大宽度是指二叉树所有层中结点个数的最大值)

二叉树采用二叉链表存储&#xff1a;编写计算二叉树最大宽度的算法 &#xff08;二叉树的最大宽度是指二叉树所有层中结点个数的最大值&#xff09; 和二叉树有关的代码&#xff0c;基本都逃不过“先中后层”&#xff0c;这四种遍历 而我们这里是让你计算最大宽度&#xff0c…

tail:无法打开文件错误

错误 解决方法与原因 原因是因为之前启动的没有关闭 解决方法 1.输入ls 2.可以看到里面有start_all.sh和stop_all.sh(我们使用stop_all.sh关闭) 3.使用start_all.sh重新启动 4.我们再使用命令查看&#xff0c;可以看到没有错误了

「Verilog学习笔记」奇偶校验

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 通常所说的奇偶校验&#xff1a; 奇校验&#xff1a;对输入数据添加1位0或者1&#xff0c;使得添加后的数包含奇数个1&#xff1b; 比如100&#xff0c;有奇数个1&am…

汇总记录Python常用的基础内置方法

这里汇总记录一些Python常用的基础内置方法 (参照哔站有一个大佬"小飞有点东西"的笔记整理记录而得&#xff0c;仅限方便需要的时候可以直接在网上搜索查阅而整理记录) 输出/输入 print() input()print打印颜色设置 显示方式;前景颜色;背景颜色&#xff0c;这3个…

CRM系统的常用功能

CRM系统旨在帮助企业有效管理客户关系&#xff0c;提升销售和市场营销业绩&#xff0c;以及提供优质的客户服务。以下是CRM系统常见的功能和模块&#xff1a; 1. 客户信息管理&#xff1a; - 中央化存储客户信息&#xff1a;CRM系统允许企业集中管理和维护客户信息&#xff0c…

腾讯云3年/5年时长云服务器购买攻略分享

腾讯云是腾讯旗下云计算品牌&#xff0c;为了吸引用户经常推出各种优惠活动&#xff0c;最吸引用户的还是特惠云服务器&#xff0c;下面给大家分享腾讯云3年/5年时长特惠服务器购买入口及攻略&#xff01; 购买入口&#xff1a;传送门>>> 购买攻略&#xff1a; 进入…

算法通关村第六关-白银挑战树

大家好我是苏麟 , 今天聊聊树 . 大纲 树的概念二叉树满二叉树完全二叉树 树的性质树的定义与存储方式树的遍历 树的概念 树是我们计算机中非常重要的一种数据结构&#xff0c;同时使用树这种数据结构&#xff0c;可以描述现实生活中的很多事物&#xff0c;例如家谱、单位的组织…

01-单节点部署clickhouse及简单使用

1、下载rpm安装包&#xff1a; 官网&#xff1a;https://packages.clickhouse.com/rpm/stable/ clickhouse19.4版本之后只需下载3个rpm安装包&#xff0c;上传到节点目录即可 2、rpm包安装&#xff1a; 安装顺序为conmon->server->client 执行 rpm -ivh ./clickhouse-…

第二十五章 BEV感知系列二(车道线感知)

前言 近期参与到了手写AI的车道线检测的学习中去&#xff0c;以此系列笔记记录学习与思考的全过程。车道线检测系列会持续更新&#xff0c;力求完整精炼&#xff0c;引人启示。所需前期知识&#xff0c;可以结合手写AI进行系统的学习。 BEV感知系列是对论文Delving into the De…

proxifier 2023年11月最新版的安装

前言 Proxifier 是一款功能非常强大的socks5客户端&#xff0c;可以让不支持通过代理服务器工作的网络程序能通过HTTPS或SOCKS代理或代理链。支持64位系统支持Xp&#xff0c;Vista&#xff0c;Win7&#xff0c;支持socks4&#xff0c;socks5&#xff0c;http 代理协议&#xf…

python 深度学习 解决遇到的报错问题8

本篇继python 深度学习 解决遇到的报错问题7-CSDN博客 目录 一、OSError: [WinError 127] 找不到指定的程序。 Error loading "D:\my_ruanjian\conda-myenvs\deeplearning\lib\site-packages\torch\lib\caffe2_detectron_ops.dll" or one of its dependencies. 二、…

婚庆策划小程序制作教程

本文将向你展示如何使用小程序制作平台&#xff0c;轻松制作婚庆策划小程序。只需按照以下步骤操作&#xff0c;你就能拥有自己的专业级婚庆策划小程序。 登录小程序制作平台 首先&#xff0c;你需要登录小程序制作平台。在浏览器搜索乔拓云&#xff0c;然后使用你的账号登录。…

【复盘】记录一次JVM 异常问题 java.lang.OutOfMemoryError: unable to create new native thread

背景是最新运营提了一个需求&#xff0c;需要根据用户信息拉去三分机构的信贷数据&#xff0c;需要达到一天百万级别&#xff0c;但是经过实际测试&#xff0c;也只能达到40W量级&#xff0c;具体就是通过起多个Spring Boot项目&#xff0c;每个项目1S拉一个用户&#xff0c;基…