- 博客(19)
- 收藏
- 关注
原创 day 22练习
编写一个函数判断这个数的数字是否是0或1,在分离每个数字的时候,如果这个数字不为0并且也不等于1,这个用的是且&&,那就返回false。先让day加上n,然后再计算让年月日的表示都是合理的。//字符顺序:从 Z 开始,每输出一个就减 1(到前一个字母)// 输出 Z//ch--;// 变成 Y// 输出 Y//ch--;// 变成 X//设行数 rows = 2N-1。//第 1 行:前面空格数 = N-1,字符 1 个(Z)
2026-02-10 20:30:42
499
原创 day 21练习
先顶一个函数计算一个数的所有约数之和,然后根据题目所要求的判断两个数是否是清和数。首先编写一个函数判断这个数是否是素数,注意1不是素数,2是最小的素数;为了避免例子中3和7,7和3这种一样的案例,所以i循环到一半的位置就可以了。首先编写一个函数判断这个数是否是素数,注意1不是素数,2是最小的素数;只需要找到最小的一个素数满足要求就可以,找到一组用break结束这个循环。
2026-02-09 16:43:37
624
原创 day 18练习
/先确定最大盒子数 n。//初始序列:1,2,3,…,n。//剩余 r=k−n(n+1)/2。//从最后一个盒子开始,依次加 1,循环加,直到 r用完。//这样能保证序列仍然严格递增,并且相邻差不会突然变大很多,从而最小化差的绝对值之和。将十进制转换为二进制至十进制 ,用目标进制(base)不断除十进制数,记录每次的余数将余数倒序排列得到结果。生成双平方数集合:计算所有可能的p² + q² (0 ≤ p, q ≤ M),去重并排序;
2026-02-05 15:05:00
479
原创 day 17练习
先对牛棚编号排序,计算如果全部用一块木板覆盖所有牛棚需要的长度,在木板数量允许的情况下,通过选择最长的空隙来分割木板,从而减少总长度,每次选择当前最大空隙进行分割,直到达到木板数量限制。#include<algorithm>中有sort排序 sort(s.begin()),s.end());从小到大排序,sort(s.rbegin()),s.rend());从大到小排序对于这个可以先排序再去重;
2026-02-04 20:47:08
545
原创 day 16练习
从1000到9999开始遍历所有的四位数,编写一个函数判断是不是某一个数的平方。先写一个函数求出一个数组中连续几个数的最大最小值,由于这个数组是不知道大小的,所以数组类型写出vector<int> s这种形式,数组大小直接记为s.size()的形式,不需要在函数括号中写出来。主要是编写一个函数对于一个数组连续几个数知能否被11整除,统计个数之和即可。
2026-02-03 21:09:53
547
原创 day 15练习
创建一个110大小的数组,数组记录的是每个数出现的次数,数组下标即表示这个数,这里注意一开始设置max为0,如后记录的数是从1开始的。可以把这个问题抽象为一个数学模型:设两地间的距离为 S,三艘船的航行时间分别为 t1,t2,t3小时(它们都是实数,且不超过 100 天的总时长 2400 小时)。根据题意,距离等于速度乘以时间,即 S=vi×ti。
2026-02-02 03:09:55
557
原创 day 14练习
主要是处理环形的循环,采取复制一份,就要创建两倍大的数组,将复制后的数组放在数组后面。先进行两次循环,计算出总和,然后计算最大最小值。对于给定的环形排列,依次考虑在每两个相邻数字之间进行剪开,总共有9种可能的剪开位置。对于每个剪开位置,需要分别计算顺时针和逆时针两个方向的数字。顺时针方向的计算相对直观,从剪开位置开始按数组顺序遍历;逆时针方向则需要反向遍历,通过计算(cut - i + 9) % 9来确保索引始终为正数并正确处理环形结构。
2026-02-01 23:16:40
530
原创 day 13练习
关键在于计算具体某一年某一个月的13号距离1900.1.1的天数是多少,然后将其用7来取余,得到最终想要的结果。可以先计算每个月有多少天,若计算某个月13日,那先算出这个月前面的月数的天数之和,再另外加13就可以了。直接创建一个数组,注意数组的大小比道路的长度多1,多一个点,然后将地铁区域的点记为1,统计为0的点就是剩下数的数目;对于未知数组大小不可以用s[l]这样是不允许的#include<vector>,vector<int> s(L+1,0)创建一个数组/列表表示所有人,标记是否被淘汰;
2026-01-31 14:21:59
569
原创 day 12练习
(代码运行出的结果不对)首先是编写一个函数计算各个数的数字之和,然后依照题意找符合的数字,这里可以合理设置一个上限,以免无限在循环。找出所有符合条件的两位数,即0到99,然后依次遍历找出符合条件的末尾两位数。
2026-01-30 15:50:40
586
原创 day 11 练习
首先是素数的判断,只能由1和自身相乘得到这个数,那么这个数就可以称为素数,可以从2到这个数的开平方相除,观察余数是不是为0;可以设置一个标志位flag,最后这个标志位要记得还原为初始值。首先写一个函数计算一个数的阶乘,接下来主函数中就可以用这个编写的函数了,用longlong可以防止数太大发生溢出。首先分离出各个数字(先10取余再整除10),然后计算出各个数字之和就可以了。
2026-01-29 11:37:40
874
原创 day 10练习
核心设计思路是通过映射表建立代码与水果属性的关联,利用存储四种水果的代码、名称和单价,实现高效的属性查询。算法采用累加统计策略,对每组测试数据初始化四种水果的总价与总重量容器,通过遍历输入记录实时更新统计数据,确保计算过程的线性时间复杂度O(m)。输出格式处理是本算法的重点难点,严格遵循题目描述的精确空间布局规则:通过硬编码空格序列实现名称行的特殊对齐(apple前7空格+2空格,其他水果1空格),运用<iomanip>库的setw()和left。
2026-01-28 13:47:36
659
原创 day 9练习
这里允许借一个瓶子,所以说两个空瓶子就可以换一瓶汽水,由此可以得到当 n ≥ 2 时,可以喝到 n / 2 瓶汽水(整数除法)。当n等于1时,一瓶汽水也喝不到。N的阶乘写作N!表示小于等于N的所有正整数的乘积。阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了。你的任务是找到阶乘最后面的非零位。举个例子,5!=1*2*3*4*5=120所以5!的最后面的非零位是2,7!=1*2*3*4*5*6*7=5040,所以最后面的非零位是4。一个不大于1000的整数N。
2026-01-27 15:42:19
913
原创 day 8练习
这个问题是约瑟夫环的变种,要求找到最小的 m,使得前 k 个出列的全是绑匪(编号 k+1~2k)。算法思路是从 m=k+1 开始逐个枚举,对每个 m 模拟出列过程:用数组标记已出列的人,从位置 1 开始数 m 个未出列的人,若前 k 次出列中有人质就放弃该 m,否则输出 m。由于 k≤10,暴力枚举与模拟在效率上可行,最终可找到满足条件的最小 m。
2026-01-26 22:17:06
538
原创 day 7 练习
通过一次遍历数字串,利用滑动窗口思想统计每个连续数字段的重复次数,在遍历过程中动态维护当前最大连续次数及对应的数字,当遇到新的连续段时比较其长度与已知最大值,若更大则更新结果,若相等则保留首次达到该次数的数字,确保最终输出的数字是连续重复出现次数最多且最早达到该次数的数字。枚举 x从 1 到 100,y从 1 到 100。检查是否满足 a2+x2=b2+y2。将满足条件的 (x,y)存入数组。按 x排序(如果 x相同,按 y排序?题目没说,但一般按 x为主序即可)。
2026-01-25 19:37:13
818
原创 day 6练习
首先要算出这个数的所有因子,然后计算总和后除以这个数本身;注意double result=(double)sum/n,去掉(double)是不对的,因为sum/n是整数,要强转为double型。本次算法围绕“个位为 7 的自然数移动数字后成原数 T 倍”问题展开,核心是通过数学推导将数字移动转化为方程求解:设原数为 N=10x+7(x 为前若干位组成的数),移动后新数为 M=7×10k+x(k 为 x 的位数),结合 M=T×N推导出 x=10T−17(10k−T)。
2026-01-24 14:31:18
926
原创 day 5 练习
对于计算各个乘数中素数因子中有多少个5,如10的阶乘中是有因子5的乘数有5和10,对于给定一个数,将其整除5代表乘数中有一个因子5,将其整除以5*5说明有两个5(包括前面整除以一个5的),将其整除以5*5*5(包括前面整除以一个5和两个5的),依次类推,直到除数大于给定的那个数;题目要求是不断从键盘输入数,所以计算阶乘中结果为0的个数单独写一个函数,然后在主函数main()中不断用循环得出从键盘输入的数的阶乘结果0的个数。
2026-01-23 16:28:13
613
原创 day4 练习
分和秒的取值范围在0~59,所以S和M是>=60,是先检查秒的范围,再检查分的范围。若秒的超过59秒,则相加后的秒减60,然后分钟数加1;然后就检查分,若分的超过59秒,则相加后的分减60,然后时钟数加1;最后还要注意输出的空格,三个数之间有两个空格。对于代码中输入的整数s的范围,不能写出90<s<100D的形式,可以写出90<s&&s<100,或者直接用一种简洁的形式写出来,如s<0||s>100,s>=90...这样简洁的形式。输出的等级ABCDE要用单引号表示,表示字符。
2026-01-22 13:38:29
273
原创 day 3练习
sqrt是开平方的意思;对于x1和x2大的数先输出小的在后面,若x1比x2小,两者用swap函数交换一下。对于不同人数那么他的优惠力度也是不同的,在第一个条件i<=20后,第二个if后面只需要写i<=40就可以了,不需要多此一举写出20<i<=40。注意每个星期的英语开头的字母是大写字母。
2026-01-21 14:47:25
333
原创 day2练习
题目要求输出的时候有空格,所以输出的时候要用到双引号表示空格。(1)一开始sum要赋一个初始值,后续才能正确计算出相加的值;(2)对for循环的熟练运用。对于保留一位小数要有头文件#include<iomanip>中的setprecision,若不加fixed则表示整体保留几位有效数字,若加fixed的话,则表示小数点后保留几位有效数字。
2026-01-19 15:26:31
427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅