给定一个n ,要求x+y+z=n
并且要求 xyz的乘积最大,
开始用的三个for的枚举,tle
用的两个for的tle。。
后来仔细研究规律,发现是个规律题。
也可以直接算这三种情况,然后比一下大小,这样比较快。
恩。。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{ long long m;
long long sum=-1;
while(~scanf("%lld",&m))
{ if(m%3==0)
printf("%ll\nd"(m/3)*(m/3)*(m/3)<<endl;
else if(m%3==2)
cout<<(m+1)/3*((m+1)/3)*((m+1)/3-1)<<endl;
else if(m%3==1)
cout<<((m+2)/3)*((m+2)/3-1)*((m+2)/3-1)<<endl;
}
return 0;
}
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
int x;
while(scanf("%d",&x)!=-1)
{
long long mid=x/3;
long long ans1,ans2,ans3;
ans1=mid*(mid-1)*(x+1-mid-mid);
ans2=mid*(mid+1)*(x-1-mid-mid);
ans3=mid*mid*mid;
long long ans=max(max(ans1,ans2),ans3);
printf("%lld\n",ans);
}
return 0;
}