平台:
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 #include2 #include 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 }