2016.07.02
UVA - 1225 Digit Counting
题目大意:记录从 1~n 的整数中 0~9 各出现多少次。解题思路:将所有的数转换成字符形式存入字符串,遍历字符串。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main() {
int num[10] = {0,0,0,0,0,0,0,0,0,0};//0--9的个数
int n;//总共有几个例子
int N;//1<N<10000
char str[10000] = { '\0' };
char str_sum[2000000] = { '\0' };
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &N);
for (int j = 1; j <= N; j++) {
sprintf(str, "%d", j);
strcat(str_sum, str);
memset(str, 0, 10000);
}
for (int j = 0; str_sum[j] != '\0'; j++) {
switch (str_sum[j]) {
case '0': num[0]++; break;
case '1': num[1]++; break;
case '2': num[2]++; break;
case '3': num[3]++; break;
case '4': num[4]++; break;
case '5': num[5]++; break;
case '6': num[6]++; break;
case '7': num[7]++; break;
case '8': num[8]++; break;
case '9': num[9]++; break;
}
}
printf("%d ", num[0]);
printf("%d ", num[1]);
printf("%d ", num[2]);
printf("%d ", num[3]);
printf("%d ", num[4]);
printf("%d ", num[5]);
printf("%d ", num[6]);
printf("%d ", num[7]);
printf("%d ", num[8]);
printf("%d\n", num[9]);
for (int j = 0; j < 10; j++) {
num[j] = 0;
}
memset(str_sum, 0, 10000);
}
return 0;
}