- 博客(41)
- 收藏
- 关注
原创 DHUOJ 基础 118 119 120
1、devc++调试的时候可能会出现延迟一两行才更改数据的情况。这样的代码,像输入5,2/5和1/2的位置就不对。也可以不设置double x。1、一开始太想当然了。
2026-03-02 22:04:14
180
原创 DHUOJ 基础 112 113 114
1、旧编译器不支持列表初始化 + 类内初始化处理方法alpha temp;int num;int age;int score;int n;cin>>n;i<n;ss.num=num;ss.age=age;这种类型报错说明类型名称打错了,拼写错误。
2026-02-27 14:12:28
442
原创 DHUOJ 基础 106 107 108
1、错误代码:没有处理最后的进位,导致最后有进位时缺失一位数int n;cin>>n;i<n;cin>>a>>b;string res;int sum=0;sum=sum%10;sum=1;//lena--;//lenb--;i>=0;1、iostream库里面可以控制16进制的输入输出1、与前面那个纯粹合数几乎一样。
2026-02-24 23:38:13
713
原创 DHUOJ 基础 103 104 105
1、超时代码int n;cin>>n;string ss;cin>>ss;int k=0;i<count;i++){i<k;输出:如果出现两个一样的5,即出现两个连续分隔符就会出现问题1、错误代码:无法处理长字符串if(!//其实不用转成整数,反而会因为假如一个字符串过长,转成整数后超出范围照成运行时错误else{else{int n;cin>>n;cin>>ss1;
2026-02-24 21:15:00
1454
原创 DHUOJ 基础 100 101 102
1、不能设置全局变量为count,会产生冲突2、num==1的话既不是素数也不是合数,要考虑这种特殊情况,如果不||num==1的话,那么isprime改成isnothe,然后将if(n<=1) return 0删掉3、要判断数组是否越界,没有判断直接报错字符串了i<=sqrt(n);string ss;i>=1;1、一定要注意输出说明,这道题的行尾不允许有空格。
2026-02-23 13:58:42
778
原创 DHUOJ 基础 97 98 99
int m=0;int len=0;n/=2;int re=0;i>=0;int n;1、学会分割函数2、掌握stoi的用法1、DEVC++不能调试string类型变量,只能打印调试因为string不是基础类型是一个类模板,调试会使得进入类内部(这就是你以为的卡住),使用成员函数c_str()进行调试2、如果不加上len++,j++3、插入的是j+1位置4、insert插入字符串和字符的写法有区别。
2026-02-22 22:26:31
917
原创 DHUOJ 基础 91 92 93
1、理解这个输出都花了一段时间2、不清楚如何读这个有换行符又是一段的输入scanf的截断规则%c:无截断,读取任意单个字符(最容易踩坑)%c会读取输入流中下一个字符,不管这个字符是啥 —— 包括空格、回车 (\n)、Tab(\t)、甚至 E 都不会截断它。1、输出记得强制转化1、核心思想是双重字符串。
2026-02-20 23:24:53
878
原创 DHUOJ 基础 88 89 90
1、sort 并不是只能对整数类型进行排列 —— 无论是 C++ 标准库的std::sort,还是其他编程语言中的排序函数,本质上都是对可比较的元素进行排序,字符、字符串、自定义类型等只要能比较大小,都可以用sort排序。sort 的核心是比较元素的大小关系,而不是限制元素的类型。只要两个元素能通过<、>等运算符比较出 “谁大谁小”,sort 就能对它们排序。1、直接除21、没有注意看输出说明。
2026-02-19 12:00:00
1207
原创 DHUOJ 基础 85 86 87
int n;cin>>n;cin>>arr;cout<<"6";i<11;int n;cin>>n;cin>>arr;i++){1、需要手动结束输入2、看错题目了,c是非负整数,不过无伤大雅。
2026-02-18 00:00:00
230
原创 DHUOJ 基础 79 80 81
1、反正考试写不出,没招了1、要注意目标饲料和种类饲料为0的情况1、为什么会出错?核心原理讲解我们日常使用的是十进制(0-9)计数,而计算机底层用的是二进制(0-1)存储浮点数(如double类型)。并非所有十进制小数都能被二进制小数精确表示。1. 直观的类比理解就像我们用十进制无法精确表示(无限循环)一样,二进制也无法精确表示像0.10.2这样的十进制小数 —— 它们在二进制中是无限循环小数。double。
2026-02-14 12:00:00
1070
原创 DHUOJ 基础 76 77 78
1、要注意每个if后再出去要把flag数组值复原2、复原的时候要把当前arr数组的值也减去3、关于输入// 多组测试数据:外层加while循环读取,直到输入结束while (cin >> arr[1][1]) { // 先读第一个数,触发多组输入1、要注意up>=down和left<=right的条件限制1、。。。这是难度中吗,给我一个准确的难度,真到考试的时候这么繁琐做一道题。。。
2026-02-13 12:00:00
725
原创 DHUOJ 基础 73 74 75
1、用两个数组int r;i<r;i++){j<r;j++){i<r;i++){j<r;j++){if(j!cout<<endl;count++;
2026-02-12 00:00:00
486
原创 DHUOJ 基础 70 71 72
1、一直在PE,调取ASCII码正确的本人的其中32是空格符号的意思,说明最后一行都多打了一个空格最后一行的1后面不能有空格,即不能打印一行的第二个1时直接cout<<"1 ",将1和空格一起打印1、注意最后一个牌后没有没有空格1、本人想的是由上至下进行dp,显然不方便2、二维vector数组在一些编译器环境下vector<vector<int>>会将后两个连起来的>>认成输出符号的一部分,所以要用空格隔开。
2026-02-11 18:00:00
863
原创 DHUOJ 基础 64 65 66
1、直接用暴力的解法,原本的思路是为了节省时间开销尝试1,10,11,100,101,110,111,1000……这样的顺序去判断,但是会非常麻烦,反正我在有限时间想不出来,passn/=10;return 1;int n;int re=n;re++;1、一开始的时候d其实剩余总天数,要为 n+d;2、要计算的是curmon,而不是nextmon3、判断是否要进一年应该放在d>curdaynum的if语句里面1、打印字符的时候要强制转化。
2026-02-09 00:00:00
627
原创 DHUOJ 基础58 59 60
1、注意判断count是否为10的倍数的代码应该放在if里面,不然会出现反复输出换行符的情况,例如29是第十个素数,如果放在原本位置,在30的时候,count还是10,会导致多一个换行符1、注意是1.0/i变成浮点数除法int sum=1;i<=n;return sum;int m,n;cin>>m>>n;
2026-02-07 00:00:00
260
原创 DHUOJ 基础 55 56 57
1、可能会出现A集合最后几个数大于B集合最大数的情况,要记得加上1、last_h数组是严格递增的1、注意这是大数相乘,要用数组模拟手工相乘2、这里的i不是手工模拟的单个数字,所以最后算最高位的进位时要用while循环,可能进位是多位的。
2026-02-06 00:00:00
912
原创 DHUOJ 基础 61 62 63
int sum=1;i<=n/2;return sum;int m;cin>>m;int a,b;cin>>a>>b;i<=sqrt(n);int t;cin>>t;int n;cin>>n;i<n/2;1、范围要加上=,例如6=3+3。
2026-02-05 19:27:45
411
原创 DHUOJ 基础 52 53 54
1、自己没想出来,数论拆分类型:要让拆分后的数的个数最多,核心原则是:尽可能先取最小的连续正整数(1,2,3,...),因为小数字能堆砌更多个数;若取完连续小数字后还有剩余值,再将剩余值从最后一个数开始,从后往前依次加 1(保证所有数仍互不相同)。1、建立正确的函数1、先用数组存储,然后先循环b再循环a2、一开始使用的是k+=b){flag=0;break;问题在于没有x++会导致死循环3、更高效的核心代码如下,这样可以不需要两个标记// 从b先开始,题目要求b先排序b <= m * m;
2026-02-05 00:00:00
809
原创 DHUOJ 基础 49 50 51
1、2、记得二刷1、核心是只有无重复项才向后遍历2、里面初始化是int j=i+1,,不是int j=i;j<remain-1;j++){//不是j=iremain--;int a,b;int k=a*b;b=b*2;a=a/2;
2026-02-03 07:06:51
914
原创 DHUOJ 基础 46 47 48
int num=0;i<101;int re=k;g=k%10;k/=10;s=k%10;k/=10;b=k%10;k/=10;q=k;cal();int n;1、max不能初始化为0,要初始化为更小的数以应对负数1、和上一题一个思路。
2026-02-02 13:44:08
509
原创 DHUOJ 基础 43 44 45
1、max不要设置为1,要设置为0,不然如果各个数都只出现一次,会以第一次出现的数为结果1、还是看清题目吧,把时辰和速度代入反了1、注意一下最后cur=n,不然死循环。
2026-02-01 17:04:38
798
原创 DHUOJ 基础 40 41 42
1、忘记k++了2、不要进行下述错误思路代码i<m+n;i++){i=i%m;1、j<9+i;j++){//顺//这个地方不能j=j%9//否则j<9+i这个条件会一直满足进入死循环1、看清题目。
2026-01-31 09:30:33
857
原创 DHUOJ 基础 37 38 39
1、注意一下1月13号是星期六先提前存储2、最后一年的12月的那个31号不用加,因为得到的是最后一年的后一年的1月13号的星期3、注意小细节,不要笔误4、400要考虑进去1、自己想到的方法是用数组1、用数组轮换2、最后再去ch[i]+1,而不是ch[count++]=len[cur]+1,这样思路更清晰3、j<remain4、看清题目要换行5、不用变长数组,但是devc++编译没报错,而且38题也用了变长数组。
2026-01-31 07:32:41
604
原创 DHUOJ 基础 34 35 36
1、先用 i+=10测出来前几个符合的数发现都是在99的基础上加100的倍数,所以改成了 i+=1002、范围控制在 i<=1000001、采用动态规划2、算了,感觉考试两个小时我也想不出,看看得了。
2026-01-30 03:08:37
573
原创 DHUOJ 基础 31 32 33
i<=sqrt(n);return 1;int n;cin>>n;int t;cin>>t;1、版本1代码没有考虑到n>1的情况double n;cin>>n;;i++){su*=i;e+=1/su;k=i;//注意不要 printf("%.6lf %d\n",e,k+1);int n;int sum=0;sum+=n%10;n/=10;
2026-01-25 05:44:20
70
原创 DHUOJ 基础 28 29 30
1、控制换行用gnum计数2、一直卡着是因为最后一行也要endl3、还可以用下列方法进行输出,更简单无1、需要进阶比较,注意一下,不要直接年×月。
2026-01-24 08:04:07
373
原创 DHUOJ 基础 25 26 27
int n;s=s/3;1、在T13求阶乘结果0的个数中有提示:在乘积中,末尾有多少个0,主要看各乘数的素数因子中有多少个2和5,每一个2和5的结合将给末尾贡献一个0。而乘数中因子2的个数远多于因子5的个数,因此,就计算各乘数中因子5的个数即可。所以这个题目算出把5抵消后的2个数再进行计算即可2、因为求的是除0之外的尾数,所以只需要关注低位即可,所以每次将结果%100000,防止数据太大而溢出1、这个题目考察的是输入。
2026-01-24 05:56:23
546
原创 DHUOJ 基础 22 23 24
有好几个地方要处理1、用数组进行存储,方便循环队列2、错误一:自己设置的下标从1开始但是用的从0开始的公式在 1 开始的环形结构里,从 pos 位置出发,顺时针数 m 个人,最后那个人的位置 = (把起点转 0 开始 + 走 m-1 步)绕回环内 + 转回 1 开始。对比:如果硬记,不如记这个 “人话版” 规则场景公式人话理解下标从 0 开始从 pos 数 m 人,走 m-1 步,绕回环内下标从 1 开始转 0 开始数完,再转回 1 开始3、如果用下标从1开始还需要。
2026-01-23 23:10:09
597
原创 DHUOJ 基础 19 20 21
1、看清题目是连续的数1、注意一下这种最后一个样例不空行的输入手法int n;cout<<1;i<=n;i++){i>=1;
2026-01-22 07:32:19
576
原创 DHUOJ 基础 16 17 18
1、一开始将a初始化为double类型,但是在if语句中a%i==0报错了,不能用double类型取余int类型,后面将i的类型也改成了double,还是不行,显示不能用double类型取余double类型,正确的写法应该是都用int类型,最后用double result=(double)sum/a,注意不能用double(sum/a),不然会先进行整数运算而导致精度缺失;或者也可以cout<<1.0*sum/a,乘一个1.0转换成浮点数运算。
2026-01-22 06:37:18
631
原创 DHUOJ 基础13 14 15
1、一开始完全想岔了,后面需要重做一次2、思路统计 5 的个数的方法:先算 N 中有多少个数是 5 的倍数(贡献至少 1 个 5):N / 5;再算有多少个数是 25 的倍数(贡献额外 1 个 5):N / 25;接着算有多少个数是 125 的倍数(贡献再额外 1 个 5):N / 125;以此类推,直到除数超过 N 为止,把所有结果相加就是总 5 的个数。比如 N=25:25/5=5(5、10、15、20、25 各贡献 1 个 5);
2026-01-21 02:58:21
573
原创 DHUOJ 基础 7 8 9
1、别落下数学知识了,二元一次方程的解都忘了,SOS1、提交了两次,第一次忘记num=0的情况了,写的num>0这个难度设置像是填着玩的,这道题算中,诡异了。
2026-01-20 02:57:23
76
原创 DHUOJ 基础 3 5 6
1、输出的多字符要用“ ”,而不是‘ ’;2、没有看清楚题目,输出结果要保留一位小数,所以从cpp换成了c语言3、精度问题(用float类型导致精度不够而使第三个样例没通过)说明系统所需要的精度更高4、getchar()吸收回车符。
2026-01-20 01:39:28
671
原创 DHUOJ 基础 1 2 4
你的程序需要从标准输入设备(通常为键盘)中读入两个整数:一个整数a(0 ≤a < 10000),代表长方形的长;你的程序需要向标准输出文件(通常为启动该程序的终端)输出对应的答案。在行首和行尾不要输出多余的空格。对每组测试数据,你的程序需要向标准输出设备(通常为启动该程序的终端)输出对应的答案,其中仅有一个整数,即题目描述中的数列之和。面积的公式为S = a × b,周长的公式P=2*(a+b),其中a代表长方形的长,b代表长方形的宽。输出该年该月的天数,输出时,行首与行尾均无空格,仅输出一个整数。
2026-01-19 18:46:43
362
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅