列表

详情


NC19970. [HAOI2008]圆上的整点

描述

求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。

输入描述

只有一个正整数n,n ≤ 2000 000 000

输出描述

整点个数

示例1

输入:

4

输出:

4

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 218ms, 内存消耗: 376K, 提交时间: 2020-10-01 19:29:37

#include<bits/stdc++.h>
using namespace std;
long long a,ans=1,aa;
int main(){
	scanf("%lld",&a),a=a*a;
	while(a%2==0)a/=2;
	for(int i=3;i*i<=a;i++)
		if(a%i==0){
			long long tmp=0;
			while(a%i==0)a/=i,tmp++;
			if((i-1)%4==0)ans*=(tmp+1);else if((i+1)%4==0)ans*=(tmp+1)%2;
		}
	printf("%lld",ans*4);
	return 0;
}

上一题