求大神指导到底是哪里出了问题哇>﹏<

P1179 [NOIP2010 普及组] 数字统计

中间的东西没太看懂
by co7ahang @ 2022-12-21 07:04:17


给你稍微改了一下 本人同蒟蒻,dalao轻喷 ```cpp #include<bits/stdc++.h> using namespace std; int main(){ int a,b,c;//a,b为范围,c为答案 int y;//临时用来判断每一位 cin>>a>>b; for(int i=a;i<=b;i++){ y=i;//i此时为需要判断的数,不能直接改i while(y!=0){ if(y%10==2) c++;//获取最后一位 y/=10;//砍掉最后一位 } } cout<<c; return 0; } ```
by co7ahang @ 2022-12-21 07:06:25


题意理解错了 请统计某个给定范围[L, R][L,R]的所有整数中,数字 2 出现的次数。 第六行就应该是 ``` for(int i=a;i<=b;i++) ```
by co7ahang @ 2022-12-21 07:07:43


还有,此处变量不适合用double,输入输出本来就是整数,int也方便整除和模
by co7ahang @ 2022-12-21 07:13:38


@[co7ahang](/user/831011) 谢谢!!ヾ(•ω•`)o
by lhwjy @ 2022-12-22 00:41:22


我把我的代码发给你,你看一下 ```c int x = i; while (x) { if (x % 10 == 2) { ans++; } x /= 10; ``` 楼上说的对,是2的个数,不是2的倍数
by hnkz @ 2023-02-01 10:15:05


```c #include<bits/stdc++.h> using namespace std; int n,m,cnt; //n为开头值 //m为末尾值 //cnt为2出现的次数 int main(){ cin>>n>>m; for(int i=n;i<=m;i++){ int temp=i; //临时变量为了操作时不改变原值 while(temp!=0){ //为0结束 if(temp%10==2){ //是否含有2 cnt++; } temp/=10; //进行下一位 //因为要进行下一位值要发生改变所以要用临时变量 } } cout<<cnt; return 0; } ```
by What_about_mine @ 2023-03-29 21:54:53


@[lhwjy](/user/897279) 希望对你有帮助
by What_about_mine @ 2023-03-29 21:56:11


|