UVa 1225 Digit Counting --- 水题
题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字
解题思路:用一个cnt数组记录0-9这10个数字出现的次数,先将cnt初始化为0,接着让i从1枚举到n,
对每个i,处理以活的i的每一个位置上的数,并在相应的cnt下标上+1
最后输出cnt数组即可
/* UVa 1225 Digit Counting --- 水题 */ #include <cstdio> #include <cstring> int cnt[15]; //cnt[i]记录数字i出现的次数 //取得n的各个位上的数,并在相应的cnt+1 void fun(int n){ if (n == 0){ return; } ++cnt[n % 10]; fun(n / 10); } int main() { int t, n; scanf("%d", &t); while (t--){ scanf("%d", &n); memset(cnt, 0, sizeof cnt); for (int i = 1; i <= n; ++i){ fun(i); } for (int i = 0; i <= 9; ++i){ printf(i == 9 ? "%d\n" : "%d ", cnt[i]); } }//while(t) return 0; }