1 #include2 #include 3 #include 4 using namespace std; 5 int a[3000],d[3000],n; 6 void cheng(int a1) 7 { 8 for(int i=1;i<=a[0];i++) 9 a[i]*=a1;10 for(int i=1;i =10000;)16 {17 a[a[0]+1]=a[a[0]]/10000;18 a[a[0]]%=10000;19 a[0]++;20 }21 return;22 }23 int xun(int a1)24 {25 if(a1<10)26 return 1;27 if(a1<100)28 return 2;29 if(a1<1000)30 return 3;31 return 4;32 }33 int main()34 {35 a[0]=1;36 a[1]=1;37 scanf("%d",&n);38 for(;n>4;)39 {40 n-=3;41 cheng(3);42 }43 cheng(n);44 for(int i=1;i<=a[0];i++)45 d[i]=xun(a[i]);46 printf("%d\n",(a[0]-1)*4+d[a[0]]);47 printf("%d",a[a[0]]);48 int i;49 for(i=a[0]-1;i>=max(1,a[0]-24);i--)50 {51 if(d[i]==1)52 printf("000%d",a[i]);53 if(d[i]==2)54 printf("00%d",a[i]);55 if(d[i]==3)56 printf("0%d",a[i]);57 if(d[i]==4)58 printf("%d",a[i]);59 }60 if(i!=0)61 {62 if(d[a[0]]==3)63 printf("%d",a[i]/1000);64 if(d[a[0]]==2)65 printf("%d",a[i]/100);66 if(d[a[0]]==1)67 printf("%d",a[i]/10);68 }69 return 0;70 }
一个数分成的数乘积最大 要尽量分3,数据范围要求要用高精压位。