1. 程式人生 > 實用技巧 >C3-UVa1225-Digit Counting

C3-UVa1225-Digit Counting

平臺:

UVa Online Judge

題號:

1225 - Digit Counting

題目連結:

https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=247&page=show_problem&problem=3666

題目說明:

把前n(n≤10000)個整數順次寫在一起:123456789101112…數一數0~9各出現多少次(輸出10個整數,分別是0,1,…,9出現的次數)。

範例輸入:

2
3
13

範例輸出:

0 1 1 1 0 0 0 0 0 0

1 6 2 2 1 1 1 1 1 1

解題方法:

一個一個計數即可。

程式碼:

 1 #include <cstdio>
 2 #include <cstring>
 3 
 4 void getMany(int t, int a[]) {
 5     while (t) {
 6         a[t % 10]++;
 7         t /= 10;
 8     }
 9 }
10 
11 void myPrint(int a[]) {
12     printf("%d", a[0]);
13     for (int i = 1; i < 10; i++) {
14 printf(" %d", a[i]); 15 } 16 printf("\n"); 17 } 18 19 int main() { 20 int T = 0; 21 scanf("%d", &T); 22 while (T--) { 23 int a[10] = { 0 }; 24 memset(a, 0, sizeof(a)); 25 int n = 0; 26 scanf("%d", &n); 27 for (int i = 1; i <= n; i++) {
28 getMany(i, a); 29 } 30 myPrint(a); 31 } 32 return 0; 33 }