已知 N 个正整数满足 K1+K2+...+Kn=M.求一组最佳的分解,使得 K1*K2*.*Kn 为最大.

问题描述:

已知 N 个正整数满足 K1+K2+...+Kn=M.求一组最佳的分解,使得 K1*K2*.*Kn 为最大.
N变了我不会改

这道题目加入不先用数学方法分析的话,程序设计设计就会很繁琐,我猜你就是用N重循环做的,很耗时,如果N变了,程序又要修改.
但先分析一下,如9这个数,分为 1 3 5 1*3*5=15 2 3 4 2*3*4=24 3*3*3=27
也就是把一个M数分成N个数,它们越接近就乘积越大
所以程序如下
#include
int main()
{ int n,m,i,s,j,a[100]={0};
long t;
scanf("%d %d",&n,&m);
s=m/n;
for(i=0;i