昨天上午开始写的,后来遇到了问题,RE了两次,就一直没做,今天Ac了455之后,换了个思路,把这个Ac了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| #include <stdio.h> #include <string.h> #define maxn 40000 int main () { int n,t,i,j,count,first; char a[maxn]; int b[10][2]={0}; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); count=0; first=1; for(i=0;i<10;i++) { b[i][0]=i; b[i][1]=0; } scanf("%d",&n); if(n>=10) { for(i=1;i<10;i++) { a[count]=i+48; count++; } if(n>=100) { for(i=10;i<100;i++) { a[count]=i/10+48; count++; a[count]=i%10+48; count++; } if(n>=1000) { for(i=100;i<1000;i++) { a[count]=i/100+48; count++; a[count]=(i%100)/10+48; count++; a[count]=i%10+48; count++; } for(i=1000;i<n+1;i++) { a[count]=i/1000+48; count++; a[count]=(i%1000)/100+48; count++; a[count]=(i%100)/10+48; count++; a[count]=(i%10)+48; count++; } } else { for(i=100;i<n+1;i++) { a[count]=i/100+48; count++; a[count]=(i%100)/10+48; count++; a[count]=i%10+48; count++; } } } else { for(i=10;i<n+1;i++) { a[count]=i/10+48; count++; a[count]=i%10+48; count++; } } } else for(i=1;i<n+1;i++) { a[count]=i+48; count++; } for(i=0;i<10;i++) { for(j=0;j<maxn;j++) { if(!a[j]) break; if(b[i][0]==a[j]-48) b[i][1]++; } } for(i=0;i<10;i++) { if(first) { printf("%d",b[i][1]); first=0; } else printf(" %d",b[i][1]); } printf("\n"); } return 0; }
|
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **