//整数分解 一个正整数可以分解成若干个自然数之和。
//请你编一个程序,对于给出的一个正整数n(1<=n<=1500),
//求出满足要求的分解方案,并使这些自然数的乘积m达到最大。
//例如n=10,则可以分解为2+2+3+3,乘积m=2*2*3*3=36
//输入格式 Input Format 一个正整数n
// 输出格式 Output Format 输出分解的自然数的最大乘积m
#include<stdio.h>
#define MAX_SIZE 1001
void pow_3(int a[],int x)

...{
int temp,t,m;
int i=1,j,n;

while(i<=x)...{
m=a[1];

for(n=0,t=0,j=1;n<=a[0];j++,n++)...{
temp=3*a[j];
a[j]=temp%10+t;//进位后的数
t=temp/10;//向高位进位

if(a[j]>=10)...{
t+=(a[j]/10);
a[j]=a[j]%10;
}//进位后的数大于10,则累加到t
}//对数a[]完成一次*3

if(a[a[0]+1]!=0)//计算新数的位数
if(a[a[0]+2]!=0)
a[0]+=2;
else
a[0]++;
i++;
}//循环x次
}
int main()

...{

int a[MAX_SIZE]=...{1,1};
int n,m=1;
int i=0,j=0,t;
scanf("%d",&n);

if(n==1)...{
printf("%d",m);
return 0;
}
i=n/3;

switch(n%3)...{
case 0:break;

case 1:...{i--;a[1]=4;break;}

case 2:...{j++;a[1]=2;break;}
}
pow_3(a,i);
for(t=a[0];t>=1;t--)
printf("%d",a[t]);
printf(" ");
return 0;
}

//请你编一个程序,对于给出的一个正整数n(1<=n<=1500),
//求出满足要求的分解方案,并使这些自然数的乘积m达到最大。
//例如n=10,则可以分解为2+2+3+3,乘积m=2*2*3*3=36
//输入格式 Input Format 一个正整数n
// 输出格式 Output Format 输出分解的自然数的最大乘积m































































