记数问题

Description

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

Input

每组输入数据共1行,包含2个整数n、x,之间用一个空格隔开。1≤n≤1,000,000,0≤x≤9。

Output

每组输出共1行,包含一个整数,表示x出现的次数。

Sample Input 1

11 1

Sample Output 1

4

Sample Input 2

1000000 0

Sample Output 2

488895

思路:假设输入n,这道题将1到n的所有数的二进制位取出来,如果等于题目第二个输入的数,则num++即可;

代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 
 4 
 5 
 6 long long int n ;
 7 long long int b ;
 8 long long int tmp;
 9 long long int a;
10 long long int num;
11 int main()
12 {
13     cin>>n;
14     cin>>a;
15     for(int i = 1 ; i <= n ;i++)
16     {
17         b = i;
18         while(b!=0)
19         {
20             tmp = b%10;
21             b/=10;
22             if(a==tmp) num++;
23         }
24         
25     }
26     cout<<num;
27     return 0;
28 }
原文地址:https://www.cnblogs.com/yewanting/p/10534082.html