【题目】
Maximum MultipleTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2370 Accepted Submission(s): 995 Problem Description 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≤106 ), indicating the number of test cases. For each test case:
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
|
【题解】
题意:给定一个n,是否能找到x,y,z满足x+y+z=n,x|n(n能被x整除),y|n,z|n,且x*y*z最大。
思路:令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
要求x*y*z最大,即要求a*b*c最小,则选取情况1,2,因为情况3比1小舍去。
【代码】
#include<stdio.h>
int main()
{
long long t,n,ans;
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
if(n%3==0)
ans=n*n*n/27;
else if(n%4==0)
ans=n*n*n/32;
else
ans=-1;
printf("%lld\n",ans);
}
return 0;
}