【BZOJ1041】[HAOI2008]圓上的整點 數學

數學題……

[HAOI2008]圓上的整點 C++代碼實現:

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
long long n,ans;
int gcd(int a,int b)
{
	if(b==0) return a;
	return gcd(b,a%b);
}
void check(long long x)
{
	for(long long i=1;i*i<=x;i++)
	{
		long long j=sqrt(x-i*i)+0.1;
		if(i>=j) break;
		if(i*i+j*j==x&&gcd(i,j)==1)
			ans++;
	}
}
int main()
{
	cin>>n;
	n<<=1;
	for(long long i=1;i*i<=n;i++)
	{
		if(n%i!=0) continue;
		check(i);
		if(i*i!=n) check(n/i);
	}
	cout<<ans*4+4;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章