HDU 6298 - Maximum Multiple [2018杭电多校联赛第一场 A](找规律)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6298
【题意】
给你一个正整数n,让你找出三个数字x,y,z且x,y,z都是n的因子,同时要满足x×y×z的值最大,输出这个最大的乘积(n<1e6)
【思路】
打表找规律,发现如果n能整除3就把n拆成n/3+n/3+n/3,其次如果n能整除4就拆分成n/4+n/4+n/2,其他情况都无解
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int T;
scanf("%d",&T);
while(T--){
ll n;
scanf("%lld",&n);
if(n%3==0){
ll ans=(n/3)*(n/3)*(n/3);
printf("%lld\n",ans);
}
else if(n%4==0){
ll ans=(n/4)*(n/4)*(n/2);
printf("%lld\n",ans);
}
else puts("-1");
}
return 0;
}