题意:给出n,将前n个整数顺次写在一起,统计各个数字出现的次数。
用的最笨的办法--直接统计-- 后来发现网上的题解有先打表来做的
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 7 char s[10005]; 8 int a[105]; 9 10 int main() 11 { 12 int ncase,n,i; 13 scanf("%d",&ncase); 14 while(ncase--) 15 { 16 scanf("%d",&n); 17 memset(a,0,sizeof(a)); 18 for(i=1;i<=n;i++) 19 { 20 if(i<10) {a[i%10]++;} 21 if(i>=10&&i<100){a[i/10]++;a[i%10]++;} 22 if(i>=100&&i<1000){a[i/100]++;a[i/10%10]++;a[i%10]++;} 23 if(i>=1000&&i<10000){a[i/1000]++;a[i/100%10]++;a[i/10%10]++;a[i%10]++;} 24 if(i>=10000){a[i/10000]++;a[i/1000%10]++;a[i/100%10]++;a[i/10%10]++;a[i%10]++;} 25 } 26 27 for(i=0;i<=8;i++) 28 printf("%d ",a[i]); 29 printf("%d",a[i]); 30 printf("\n"); 31 } 32 return 0; 33 }