题目标题:
最大乘积的整数的拆分
题目描述:
将一个整数N分解成各不相同的加数的和,(这个位置有问题。。。)使这些加数的乘积最大。N范围为[5,1000]
输入描述:
输入一个整数N(5<=N<=1000)
输出描述:
能够使得积最大的加数序列
样式输入:
7
样式输出:
3 4
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i,k,r;
k=n/3;/*
可以通过数学证明得到,当换分数是自然对数e时,成绩最大,因而多划3,至于是划4还是2就看余数是多少了*/
r=n%3;
if(r==0)
{
printf("3");
for(i=0;i<k-1;i++)
printf(" 3");
}
if(r==1)
{
r=4;
k--;
for(i=0;i<k;i++)
printf("3 ");
printf("4");
}
if(r==2)
{
printf("2");
for(i=0;i<k;i++)
printf(" 3");
}
return 0;
}