描述
实验小学召开秋季运动会。六(一)班的学生小杰领到了他的运动员号码“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 }