题目描述
给N个数,判断这N个数中存在多少组勾股数(勾股数:存在三个数满足a*a + b*b = c*c)。
输入
第一行输入一个数T(1<=T<=50),表示有T组数据。
每组数据输入一个N(1<=N<=1000)。
接下来N个数ai(1<=ai<=10^9)。
输出
每组数据输出一行,表示有多少组勾股数。
示例输入
3 4 4 3 5 3 4 6 7 8 10 5 6 7 8 9 5
示例输出
2 1 0
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int T,n,a[10010];
scanf("%d",&T);
int b[10010],i,j;
while(T--)
{
int count = 0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int r = 0;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
double k;
k = sqrt(a[i]*a[i] + a[j]*a[j]);
int t;
t = k;
if(k - t == 0)
{
b[r++] = t;
}
}
}
for(i=0;i<r;i++)
{
for(j=0;j<n;j++)
{
if(a[j] == b[i])
{
count++;
}
}
}
printf("%d\n",count);
}
return 0;
}