poj1305:概念水题

时间:2023-03-09 01:30:14
poj1305:概念水题

了解一下毕达哥拉斯三元组概念= =

暴力求出所有的本源三元组即可

代码:

#include <iostream>
#include <stdio.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<math.h>
#include<ctype.h>
using namespace std;
#define MAXN 10000
int n;
bool vi[];
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("shu.txt","r",stdin);
#endif
while(scanf("%d",&n)!=EOF)
{
memset(vi,,sizeof(vi));
int ans1=;
int ans2=;
for(int i=;;i++)
{
if(i*i+(i+)*(i+)>n)
break;
for(int j=i+;;j++)
{
if(i*i+j*j>n)
break;
if((i%)==(j%))
continue;
if(gcd(i,j)!=)
continue;
int x=j*j-i*i;
int y=*i*j;
int z=i*i+j*j;
ans1++;
for(int k=;k*z<=n;k++)
{
vi[k*x]=vi[k*y]=vi[k*z]=;
}
}
}
for(int i=;i<=n;i++)
ans2+=!vi[i];
printf("%d %d\n",ans1,ans2);
}
return ;
}