#define le 40\x0d double d[le];\x0d int age[le];\x0d int k=10;\x0d double max=1;\x0d void reset()\x0d {\x0d int i=1;\x0d for(;i<le;i++){d[i]=0;}\x0d d[0]=1;\x0d }\x0d int t()\x0d {\x0d int i=le-1;\x0d for(;i>0;i--) {if(d[i]>0)return i;}\x0d return 0;\x0d }\x0d void pr()\x0d {\x0d \x09int i=0;\x0d \x09int j=t();\x0d \x09printf("%.0f",d[j]);\x0d \x09if(j>0)for(i=j-1;i>=0;i--) {printf("%010.0f",d[i]);}\x0d \x09puts("");\x0d }\x0d int f(int a)\x0d {\x0d if(a==0)return 0;\x0d \x09int i;\x0d \x09for(i=0;i<le;i++){age[i]=0;}\x0d \x09for(i=0;i<le-1;i++) {\x0d \x09\x09d[i]*=a;\x0d \x09\x09if(d[i]>=max){\x0d \x09\x09\x09age[i+1]=(int)(d[i]/max);\x0d \x09\x09\x09d[i]=d[i]-age[i+1]*max;\x0d \x09\x09}\x0d \x09}\x0d \x09for(i=0;i<le-1;i++) {d[i]+=age[i];}\x0d \x09return (a==1?a:f(a-1));\x0d }\x0d \x0d \x0d main(){char z[5];int a;for(a=0;a<k;a++)max*=10;while(gets(z)){reset();sscanf(z,"%d",&a);f(a);pr();}}\x0d
Note that non-ascii characters in the above source code will be escaped (such as \x9f).