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 }