题目大意:给出i,输出第i个镜像数,不能有前导0.
题解:从外层开始模拟
#include <stdio.h> int p(int x) { int sum, i; for(sum=i=1;i<=x;i++) sum *= 10; return sum; } int main() { int n, i, j, t, cs[1000], c; while(~scanf("%d", &n)) { if(n==0) break; i=1; while(n>9*p((i-1)/2)) { n -= 9*p((i-1)/2); i++; } c = (i+1)/2; t=1; while(c) { c--; cs[t]=0; while(n>p(c)) { n -= p(c); cs[t]++; } t++; } cs[1]++; for(j=1;j<t;j++) printf("%d", cs[j]); if(i%2==0) printf("%d", cs[t-1]); for(j=t-2;j>=1;j--) printf("%d", cs[j]); printf("\n"); } return 0; }
时间: 2024-11-02 14:10:32