Problem Description
Input
Output
Sample Input
Sample Output
HintThere are five right-angled triangles where a + b + c ≤ 40. That are one right-angled triangle where a = 3, b = 4 and c = 5; one right-angled triangle where a = 6, b = 8 and c = 10; one right-angled triangle where a = 5, b = 12 and c = 13; one right-angled triangle where a = 9, b = 12 and c = 15; one right-angled triangle where a = 8, b = 15 and c = 17.
//187 ms 208KB
#include<stdio.h>
#include<math.h>
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
void solve(int t)
{
int tmp=sqrt(t),x,y,z,ans=0;
for(int n=1; n<=tmp; n++)
for(int m=n+1; m<=tmp; m++)
{
if(2*m*m+2*m*n>t)break;//x+y+z>t结束
if(n%2!=m%2)
{
if(gcd(m,n)==1)
{
x=m*m-n*n;
y=2*m*n;
z=m*m+n*n;
for(int i=1;; i++)
{
if(i*(x+y+z)>t)break;
ans++;
}
}
}
}
printf("%d\n",ans);
}
int main()
{
int t;
while(scanf("%d",&t)!=EOF)
solve(t);
return 0;
}
FZU 1669 Right-angled Triangle 解毕达哥拉斯三元组
原文:http://blog.csdn.net/crescent__moon/article/details/19337341