Description
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
Input
只有一个正整数n,n<=2000 000 000
Output
整点个数
Sample Input
4
Sample Output
4
Solution
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
using namespace std;
LL n,ans=;
int main()
{
scanf("%lld",&n); n=n*n;
for (int i=; i<=sqrt(n); ++i)
{
int cnt=;
while (n%i==) n/=i, cnt++;
if (i%==) ans*=(cnt%)?:;
else if (i%==) ans*=cnt+;
}
if (n%==) ans=;
else if (n!= && n%==) ans*=;
printf("%lld\n",ans*);
}