一、问题描述
小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。 他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?
二、题目要求
考察
循环判断,计数 建议用时5~15min
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
三、问题分析
题目要求求出在1到2022的范围内有多少个年份包含2,我们只需要对每一个年份进行判断就行了,比如构造一个单独的函数用来判断,其结果返回bool型变量,bool变量包含两个结果,true代表1可执行。false代表0,不可执行。
while(k) { if(k%10==2) returntrue;//如果当前位置包含2,返回truek=k/10;//对下一位进行判断} returnfalse;//所有位数都不包含2,返回false
四、编码实现
usingnamespacestd; booljudge(intk)//bool型函数 { while(k) { if(k%10==2) returntrue;//如果当前位置包含2,返回truek=k/10;//对下一位进行判断 } returnfalse;//所有位数都不包含2,返回false} intmain() { inti,n=2020,sum=0,k;//初始化n sum的值 for(i=1;i<=n;i++)//for循环进行判断 { k=i; if(judge(k))//如果判断成功,sum++ { sum++; } } cout<<sum;//输出sum return0; }
五、输出结果
输出结果为:563