题目:

2017年4月11日携程笔试题 乘积最大_动态规划

解析:​

代码:

#include<iostream>
using namespace std;

int maxNum(int k) //依据一个原理,分解式一定是一段连续的整数,或者是一段连续的整数去掉一个
{
if (k <= 1)return 1;
int n = 1, ans = 1, sum = 0;
while (sum <= k)n++, sum += n, ans *= n;
ans /= sum - k;
return ans;
}
int main()
{
int res;
int _k;
scanf("%d", &_k);
res = maxNum(_k);
printf("%d\n", res);
return 0;
}