题目大意就是将前 n 个数字按顺序写在一起, 然后统计这整个由数字组成的串中 0-9 各出现了几次. 代码如下, 比较容易理解.
- #include <iostream>
- #include <string>
- #include <cstdio>
- #include <cstring>
- #define maxn 1000000+10
- #include <ctype.h>
- using namespace std ;
- int main(){
- int n ;
- cin>> n ;
- while ( n -- ){
- int k ;
- cin>> k ;
- int num_1=0,num_2=0,num_3=0,num_4=0,num_5=0,num_6=0,num_7=0,num_8=0,num_9=0,num_0=0 ;
- for ( int i = 1 ; i <= k ; i ++ ){
- int t = i ;
- while( t> 0 ){
- int temp = t % 10 ;
- if ( temp == 1 ) num_1 ++ ;
- if ( temp == 2 ) num_2 ++ ;
- if ( temp == 3 ) num_3 ++ ;
- if ( temp == 4 ) num_4 ++ ;
- if ( temp == 5 ) num_5 ++ ;
- if ( temp == 6 ) num_6 ++ ;
- if ( temp == 7 ) num_7 ++ ;
- if ( temp == 8 ) num_8 ++ ;
- if ( temp == 9 ) num_9 ++ ;
- if ( temp == 0 ) num_0 ++ ;
- t /= 10 ;
- }
- }
- printf("%d %d %d %d %d %d %d %d %d %d\n",num_0,num_1,num_2,num_3,num_4,num_5,num_6,num_7,num_8,num_9) ;
- }
- return 0 ;
- }