C3-UVa1225-Digit Counting

Posted on 2020-06-28 09:48  lemonforce  阅读(124)  评论(0编辑  收藏  举报

平台:

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 }