Description
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
Input
只有一个正整数n,n<=2000 000 000
Output
整点个数
Sample Input
4
Sample Output
4
这道题实际上就是的整数解的数量,令n=,其中pi≡1(mod 4),pj≡3(mod 4),则最后结果为4∏(qi+1),下面是程序:
#include<stdio.h>
#include<math.h>
#include<iostream>
#define ll long long
using namespace std;
int main(){
ll n,i,s=1;
cin>>n;
n*=n;
while(!(n&1)){
n>>=1;
}
for(i=2;i*i<=n;i++){
int tp=1;
while(!(n%i)){
n/=i;
tp++;
}
if(i%4==1){
s*=tp;
}
}
cout<<(s<<2)<<endl;
return 0;
}