链接:https://www.nowcoder.com/test/question/done?tid=17985950&qid=225200#summary
问题描述:
给出一个整数n,将n分解为至少两个整数之和,使得这些整数的乘积最大化,输出能够获得的最大的乘积。
例如:
2=1+1,输出1;
10=3+3+4,输出36。
思路:应该是枚举法,然而笔试时太慌张没想到怎么做。先Mark一个答案,以后再分析。
#include <iostream>
using namespace std;
void fun(int n);
int main()
{
int n=0;
cin>>n;
return 0;
}
void fun(int n)
{
int res=1;
for (int i=2;i <= n ;i++)
{
int mul=1;
int m=n/i;
int q=n%i;
for (int j=0;j<i;j++)
{
if (q>=1)
{
mul = mul*(m+1);
--q;
}
else
{
mul = mul*m;
}
}
if (res < mul)
{
res = mul;
}
}
cout<<res<<endl;
}