【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;
}


发布了25 篇原创文章 · 获赞 2 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览