问题 D: 猫和兔子
时间限制: 1 Sec 内存限制: 128 MB
[状态] [提交] [命题人:admin]
题目描述
一只猫和一只兔子玩简单的猜谜游戏。猫选择了两个不同的正整数X和Y,然后他告诉兔子N个正整数,这N个正整数当中,有一个是X+Y,还有一个是X-Y,剩余的N-2个是任意给的。兔子喜欢大整数,输出X*Y的最大可能值。
输入
多组测试数据。
第一行,一个整数G,表示有G组测试数据。1<=G<=5。
每组测试数据格式如下:
第1行,一个正整数N。2<=N<=50。
第2行,N个正整数,空格分开,就是猫给出的那N个正整数,范围都是【1,100】,数据保证这N个正整数都是不同的,而且一定有解。
输出
共G行,每行一个正整数。
样例输入 Copy
5
3
1 4 5
4
1 4 5 8
9
9 8 7 6 5 4 3 2 1
2
2 100
5
50 58 47 57 40
样例输出 Copy
6
12
20
2499
441
提示
对于第2组测试数据的解释:
当X=3且Y=2是可行的,此时XY=6。
但X=6且Y=2也是可行,此时XY=12。
可以发现,后者更优。
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int main() {
int n,m,t,x,i,j,s;
int a[1000],b;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
m=-1;
sort(a+1,a+1+n);
for(j=1;j<=n;j++)
for(i=1;i<=n;i++)
{
x=a[i]*a[i];
s=a[j]*a[j];
if((x-s)%4==0&&i!=j)
{
b=(x-s)/4;
m=max(b,m);
}
}
printf("%d\n",m);
}
return 0;
}