UVa1225 - Digit Counting 題解
阿新 • • 發佈:2020-11-05
題目
題目連結
題目大意
Trung不想寫數學作業,於是他就數數字。12345678910111213。在這個數字序列裡,0 出現了1次,1出現了6次,2出現了2次,3出現了3次,4到9每個數字出現了1次。現在他想搞一個程式來幫忙數數字。
第一行輸入為測試的資料數量T(0<T<=20),接下來T行每行為1個測試資料。
樣例輸入
2
3
13
樣例輸出
0 1 1 1 0 0 0 0 0 0
1 6 2 2 1 1 1 1 1 1
題解
這道題幾乎照著題目的意思答出來就行,不過考慮到如果每接受一次資料就算一次可能會超時,不如打個表。
Then show the code.
#include <stdio.h> #include <string.h> //digCou[i][j]表示數字j裡i數字的數目 char digCou[10][10005]; int result[15]; int main(){ //打表 memset(digCou, 0, sizeof(digCou)); for(int i=1; i<10000; i++){ int temp = i; while(temp){ digCou[temp%10][i]++; temp /= 10; } } int T; scanf("%d", &T); while(T--){ int n; scanf("%d", &n); memset(result, 0, sizeof(result)); //計算結果 for(int i=1; i<=n; i++) for(int j=0; j<=9; j++) result[j] += digCou[j][i]; //輸出結果 for(int i=0; i<=9; i++){ printf("%d", result[i]); if(i != 9) printf(" "); } printf("\n"); } return 0; }