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 }

 

Tags: