问题 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
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;
}
                










