P1980 [NOIP2013 普及组] 计数问题

题目

描述

试计算在区间 1 到 n 的所有整数中,数字 x(0≤x≤9) 共出现了多少次?
例如,在 1到11中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。

输入格式

2个整数n,x,之间用一个空格隔开。

输出格式

1个整数,表示x出现的次数。

输入输出样例

输入 输出
11 1 4

解答

建模分析

分析N个数字里面有什么数字,即需求出每位数的数字,例如一个百位数 123,得求出 百位数 1,十位数 2,个位数 3,然后再和x比较。

求各个位上的数,取余是不二法门。

#include<iostream>
using namespace std;

int n,x,c;
int main()
{
    c=0;
    cin>>n>>x;
    for(int i=1;i<=n;i++)
    {
	    if(i==10000000&&x==1) c++;
	    if(i>=1000000&&i%10000000/1000000==x) c++;
	    if(i>=100000&&i%1000000/100000==x) c++;
	    if(i>=10000&&i%100000/10000==x) c++;
	    if(i>=1000&&i%10000/1000==x) c++;
	    if(i>=100&&i%1000/100==x) c++;
	    if(i>=10&&i%100/10==x) c++;
	    if(i>=1&&i%10==x) c++;
	}
    cout<<c;
    return 0;
}
posted @ 2021-04-12 17:28  CodeSpark  阅读(581)  评论(0)    收藏  举报