且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

算法题每日一练---第7天:美丽的2

更新时间:2022-10-11 18:09:43

一、问题描述


小蓝特别喜欢 2,今年是公元 2020 年,他特别高兴。 他很好奇,在公元 1 年到公元 2020 年(包含)中,有多少个年份的数位中包含数字 2?


二、题目要求


考察

循环判断,计数
建议用时5~15min


运行限制

  • 最大运行时间:1s
  • 最大运行内存: 128M


三、问题分析


题目要求求出在1到2022的范围内有多少个年份包含2,我们只需要对每一个年份进行判断就行了,比如构造一个单独的函数用来判断,其结果返回bool型变量,bool变量包含两个结果,true代表1可执行。false代表0,不可执行。

while(k)
{
    if(k%10==2) return true;//如果当前位置包含2,返回true
    k=k/10;//对下一位进行判断
}
return false;//所有位数都不包含2,返回false


四、编码实现


#include<iostream>
using namespace std;
bool judge(int k)//bool型函数 
{
    while(k)
    {
        if(k%10==2) return true;//如果当前位置包含2,返回true
        k=k/10;//对下一位进行判断
    }
    return false;//所有位数都不包含2,返回false
}
int main()
{
    int i,n=2020,sum=0,k;//初始化n sum的值 
    for(i=1;i<=n;i++)//for循环进行判断 
    {
        k=i;
        if(judge(k))//如果判断成功,sum++ 
        {
            sum++;
        }
    }
    cout<<sum;//输出sum 
    return 0;
}


五、输出结果

算法题每日一练---第7天:美丽的2

输出结果为:563