Desprition
Given an integer n, Chiaki would like to find three positive integers x, y and z.such that: n=x+y+z ,x∣n, y∣n, z∣n and xyz is maximum.
Input
There are multiple test cases. The first line of input contains an integer T (1≤T≤10^6), indicating the number of test cases. For each test case:
The first line contains an integer n (1≤n≤10^6).
Output
For each test case, output an integer denoting the maximum xyz. If there no such integers, output −1 instead.
Sample Input
3
1
2
3
Sample Output
-1
-1
1
解析
首先先理解题意:
1. n=x+y+z
2.x,y,z都是n的因子
3.输出最大的x*y*z的值
思路
找出符合以上三个条件的数。我们假设n=1;
1=1/2+1/3+1/6=1/3+1/3+1/3=1/2+1/3+1/6。我们发现当n能被3整除,xyz的最大值是pow(n/3,3).当n能被4整除时,xyz的最大值是n/2*n/4*n/4,当n能被6整除,它的最大值其实也是pow(n/3,3)。其余的数都不符合条件,输出-1
代码
#include<stdio.h>
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long n;
scanf("%lld",&n);
if(n%3==0)
{
long long temp=n/3;
printf("%lld\n",temp*temp*temp);
}
else if(n%4==0)
{
long long temp=n/4;
printf("%lld\n",temp*temp*2*temp);
}
else
printf("-1\n");
}
return 0;
}