数字统计

请统计某个给定范围[L, R]的所有整数中,数字2出现的次数。

比如给定范围[2, 22],数字2在数2中出现了1次,在数12中出现1次,在数20中出现1次,在数21中出现1次,在数22中出现2次,所以数字2在该范围内一共出现了6次。

输入

输入共 1 行,为两个正整数 L 和 R,之间用一个空格隔开。

输出

输出共 1 行,表示数字 2 出现的次数。

样例输入

样例 #1:
2 22

样例 #2:
2 100

样例输出

样例 #1:
6

样例 #2:
20

我的代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<iomanip>
#include<bitset>

using namespace std;

int main()
{
    int a,b,n,k=0;
    
    scanf("%d %d",&a,&b);
    
    for(int i=a;i<=b;i++)
    {
        do{
            n=i%10;
            if(n==2)
                k+=1;
                
            i/=10;
            
        }while(i%10>0);
            
        
    }
    
    printf("%d",k);
    
    return 0;
}      

看起来确实合理,程序无法顺利执行下去,原因暂时不明,参考代码:


#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;


int main()
{

int a,b,n=0;
cin>>a>>b;
for(int i=a;i<=b;i++)
{
    if(i%10==2)
    n++;
    if((i/10)%10==2)
    n++;
    if((i/100)%10==2)
    n++;
    if((i/1000)%10==2)
    n++;
    if((i/10000)%10==2)
    n++;
}

cout<<n;


return 0;
}

经验就是,能够用多加几条语句就能够得出结果的就直接写语句,不要为了循环而循环

猜你喜欢

转载自blog.csdn.net/LVT18171910/article/details/81410971