***uva1225 數數字 (打表)
阿新 • • 發佈:2018-12-09
題目大意: 把前n(n<=10000) 個整數按順序寫在一起,123456789101112···· 數一數0~9個出現多少次(輸出10個數,分別是按0,1,2,3····9出現的次數)
#include <iostream> #include <cstring> using namespace std; int main() { int arr[11][10005]; memset(arr,0,sizeof(arr)); for(int i=1;i<=10005;i++) { int e=i; while (e) { arr[e%10][i]++; e=e/10; } for(int j=0;j<10;j++) arr[j][i]+=arr[j][i-1]; //打表 適合問題:所求的結果在過程中需要重複並且打表資料量不大 } int T; cin >>T; while (T--) { int n; cin >>n; for(int i=0;i<9;i++) cout <<arr[i][n]<<" "; cout <<arr[9][n]<<endl; } return 0; }