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