题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6298
题意分析:
求xyz在满足x+y+z=n并且x|n,y|n,z|n的情况下的最大值;
设t=n/x,s=n/y,r=n/z
所以x=n/t,y=n/s,z=n/r
代入 x+y+z=n 中 同除n化简得
1/t+1/s+1/r=1并且t,s,r都为整数
该不定方程的整数解只有如下三组t,s,r分别为
1/3 1/3 1/3 xyz为n*n*n/27
1/2 1/4 1/4 xyz为n*n*n/32
1/2 1/3 1/6 xyz为n*n*n/36
显然如果满足第三种则一定满足第一种,求最大值所以第三种可以舍弃。所以此题代码如下
题目建模:
规律题,要么按题目要求一步步模拟,要不然打表瞎搞试试
#include <iostream>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
long long int x;
scanf("%lld",&x);
if(x%3==0)
{
printf("%lld\n",x*x*x/27);//这种情况值更大先判断
}
else if(x%4==0)
{
printf("%lld\n",x*x*x/32);
}
else
{
printf("-1\n");
}
}
}