天天看点

1358统计号码牌

描述

实验小学召开秋季运动会。六(一)班的学生小杰领到了他的运动员号码“15”,由1张“1”和1张“5”,共2张号码牌组成的;他的同学张伟号码是“6”,只有1张“6”号码牌;而李飞的号码是“1111”,由4张“1”号码牌组成。爱动脑筋的小杰就想了:假设学校的运动员数是N,按1-N编号,那么分别需要“0”-“9”这十种号码牌多少张呢?请你编写一个程序,帮他计算出需要的各种号码牌张数。

输入

运动员人数N,N<10000。

输出

分别对应号码0-9需要的张数,每个数之间用一个空格分隔开。

输入样例 1 

15      

输出样例 1

1 8 2 2 2 2 1 1 1 1


这道题我的做法是用for循环把一到N的所有数挨个分解,然后用数组统计每个数字用的次数。      
1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     int a[9]={0,0,0,0,0,0,0,0,0},n,b,k;
 6     cin>>n;
 7     for(int i=1;i<=n;i++)
 8     {
 9         b=i;
10         while(b!=0)
11         {
12             k=b%10;
13             b/=10;
14             a[k]++;
15         }
16     }
17     for(int i=0;i<=8;i++)
18     {
19         cout<<a[i]<<" ";
20     }
21     cout<<a[9];
22     return 0;
23 }