题目:
提交代码
#数字分割,使得乘积最大
import os
import sys
n = int(input())
res = 1
if n%3==2:
i = n//3
q=2
elif n%3 == 0:
i = n//3
q=1
else:
i = n//3-1
q=4
for j in range(i):
res=res*3
res = res*q
print(res)
#数论告诉我们,分解成e才会使得乘积最大,但是分成整数,就只能尽可能多的分成2和3(最好是3)
感觉思路是暴力,但是不知道为什么测试用例通过率93.33%,用例6一直过不了,用了C的是抄的,不太理解C的思路
#include <stdio.h>
#include <stdlib.h>
typedef long long int llint;
llint max(llint a,llint b){
return a>b?a:b;
}
llint MAX(llint a,llint b,llint c,llint d,llint e){
a=max(a,b);
c=max(c,d);
a=max(a,e);
return max(a,c);
}
int main(int argc, char *argv[])
{
// 请在此输入您的代码
llint dp[101]={0};
llint m,n,j,i;
dp[1]=1;
dp[0]=1;
scanf("%lld",&n);
for(i=2;i<=n;i++){
for(j=0;j<=i;j++){
dp[i]=MAX(dp[i],dp[i-j]*dp[j],dp[i-j]*j,(i-j)*j,(i-j)*dp[j]);
}
}
printf("%lld ",dp[n]);
return 0;
}
希望有大佬能指点一下0v0