分析题目:
题目中的整数应该是正整数才合理,不然按照正数和负数一起分,则无穷。
所以假设N=n1+n2+n3+……+nk;且n1xn2xn3x…….xnk最大。
1.N=1,输出1
2.满足假设的因子只能小于5,证明
有一个正整数N可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大?求详细解释。 – 知乎
将N尽可能的分解为多个3的乘积,余数部分分情况讨论。
分析题目易知,N为 3n型、3n+1型、3n+2型中的一种(一个数 mod q,余数在0到q – 1之间)
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int process(int x)
{
if(x == 1)
return 1;
if(x == 4)
return 4;
int a = x / 3;
if(x % 3 == 2)
return 2*pow(3,a);
else
return pow(3,a);
}
int main()
{
int x;
cin >> x;
cout << process(x) << endl;
return 0;
}