1.看到t最大1e6,觉得应该有规律。
2.打表发现12个数为一组,然后就没有然后了。。。
题意:给定一个n,是否能找到x,y,z满足x+y+z=n,x|n(n能被x整除),y|n,z|n,且xyz最大。
思路:令a=n/x,b=n/y,c=n/z,1/a+1/b+1/c=1,a,b,c的三个解分别为:1. 3 3 3 2. 2 4 4 3. 2 3 6
要求xyz最大,即要求abc最小,则选取情况1,2,因为情况3比1小舍去。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n%3==0)
{
printf("%lld\n",(ll)n*n*n/27);
}
else if(n%4==0)
{
printf("%lld\n",(ll)n*n*n/32);
}
else printf("-1\n");
}
}