题目描述
设n是一个正整数。现要求将n分解为k个自然数的和,且使这些自然数的乘积最大。对于给定的正整数n,编程计算最优分解方案。
输入
输入包括多组测试数据,每组1行,分别为n和k。(n<100,k<50)
输出
最大乘积。
样例输入
2 10 3 5 4
样例输出
36 2
#include<iostream>
using namespace std;
int main()
{
int m;
scanf("%d",&m);
while(m--)
{
int n,k,i=1,t1=0,s1=1,s2=1,j=1,x1=0,t2=1,x2=9;
scanf("%d%d",&n,&k);
t1=n/k;
x1=n;
while(i<k)
{
x1-=t1;
s1*=t1;
i++;
}
s1*=x1;
t2+=(n/k);
x2=n;
while(j<k)
{
x2-=t2;
s2*=t2;
j++;
}
s2*=x2;
if(s1<s2)
s1=s2;
printf("%d\n",s1);
}
}