1 条题解
-
0
自动搬运
来自洛谷,原作者为

亿年已过
0.0搬运于
2025-08-24 21:22:08,当前版本为作者最后更新于2019-09-25 13:55:56,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
蒟蒻的第三篇题解!
相对来说,这一题还是比较简单的。
主要就是考数字拆分:
for(int i=L;i<=R;i++) //从L到R这个范围中找数字2 { x=i; //用x来装i的值 while(x>0) //只要x大于0就运行下面的程序 { if(x%10==2)ans++; //如果i某一位的数字是2,ans++ x/=10; //准备好下一位数字的判断 } }下面这一段程序的解释
while(x>0) { if(x%10==2)ans++; x/=10; }注:假设x=123
第一次运行:
x>0,所以运行下面程序 x%10==3 所以ans不加 x/=10 x=12
第二次运行:
x>0,所以运行下面程序 x%10==2 所以ans++ x/=10 x=1
第三次运行:
x>0,所以运行下面程序 x%10==1 所以ans不加 x/=10 x=0
第四次运行:
x==0,所以不运行下面程序
AC代码
#include<bits/stdc++.h> //万能头文件 using namespace std; int L,R,x,ans; int main() { scanf("%d%d",&L,&R);//输入 for(int i=L;i<=R;i++) //从L到R这个范围中找数字2 { x=i; //用x来装i的值 while(x>0) //只要x大于0就运行下面的程序 { if(x%10==2)ans++; //如果i某一位的数字是2,ans++ x/=10; //准备好下一位数字的判断 } } printf("%d",ans);//输出 return 0; }
- 1
信息
- ID
- 180
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者