Description
一天mingming问了Flying一个数学问题:给出一个整数,存在多少个直角三角,它的某一条边等于这个整数,而且其它边也是整数。Flying是做ACM的,他就写了个程序解决了这个问题。你也能写个程序解决吗?
Input
第一行一个整数n, 代表有多少个数据( 1 <= n<= 20)。接下来有n行,没一行有一个数据。一个数据就是个整数ai ( 1 <= i <= n, 1 <= ai <= 100)。
Output
每个数据都必须有相应的输出。两个数据之间有一个空行。最后一个测试数据输出后不要加空行。
对于每一个数据,如果找不到解,则输出一个空行。如果找到解,就把符合条件的所有直角三角形输出。每个三角行占一行,输出该三角行的另外两条边,必须先输出长边,然后一个逗号,再输出短边。两个三角行之间不能有空行,而且必须按长边降序排列。
Sample Input
2
20
12
Sample Output
101,99
52,48
29,21
25,15
16,12
37,35
20,16
15,9
13,5
骗小孩玩的,纯娱乐;
#include<stdio.h>
#include<math.h>
int main()
{
int ncase,i,j,k,m,n,ok=0,dd;
scanf("%d",&ncase);
while(ncase--)
{
if(ok==1)
printf("\n");
scanf("%d",&n);
dd=0;
for(i=10000;i>=1;i--)
{
if(i>n)
{
m=(int)sqrt(i*i-n*n);
}
else
m=(int)sqrt(n*n-i*i);
if(m*m+n*n==i*i&&m!=0)
{
dd=1;
printf("%d,%d\n",i,m);
}
if(m*m+i*i==n*n&&i>=m&&m!=0)
{
dd=1;
printf("%d,%d\n",i,m);
}
}
if(dd==0)
printf("\n");
ok=1;
}
return 0;
}