您的位置:首页 > 其它

数数字(Digit Counting , ACM/ICPC Danang 2007, UVa1225)

2016-02-03 21:50 281 查看
共t个数字,输入正整数n,把前n(n≤10000)个整数顺次写在一起:123456789101112…数一数0~9各出现多少次(输出10个整数,分别是0,1,…,9出现的次数)。

输入:

3

3

13

100

输出:

0 1 1 1 0 0 0 0 0 0

1 6 2 2 1 1 1 1 1 1

11 21 20 20 20 20 20 20 20 20

代码:

#include<stdio.h>
#include<string.h>
int main() {
int t;
scanf("%d", &t);
while(t--) {
int n, i;
scanf("%d", &n);
int x;
int b[10];
memset(b, 0, sizeof(b));//将b数组全赋值为0
for(i = 1; i <= n; ++i) {
x = i;
while(x) {
b[x%10] += 1;
x /= 10;
}
}
for(i = 0; i < 10; ++i) {
printf("%d ", b[i]);
}
printf("\n");
}
return 0;
}


注意:

1. 数个数时的算法要注意别漏0,且从1开始数。

2. memset()在头文件string.h里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: