求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
标签:dog detail net lld out com user center csdn
求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数。
只有一个正整数n,n<=2000 000 000
整点个数
1 /************************************************************** 2 Problem: 1041 3 User: Doggu 4 Language: C++ 5 Result: Accepted 6 Time:104 ms 7 Memory:828 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 #include <cmath> 12 long long n, ans; 13 inline long long gcd(long long a,long long b) {return b==0?a:gcd(b,a%b);} 14 int main() { 15 scanf("%lld",&n); 16 long long cou, b; 17 double t; 18 for( long long i = 1; i*i <= 2*n; i++ ) { 19 if(2*n%i==0) { 20 cou=i; 21 for( long long a = 1; 2*a*a < cou; a++ ) { 22 t=sqrt(cou-a*a); 23 if(t==floor(t)) { 24 b=(long long)floor(t); 25 if(a!=b&&gcd(a,b)==1) ans++; 26 } 27 } 28 cou=2*n/i; 29 if(2*n/i==i) continue; 30 for( long long a = 1; 2*a*a < cou; a++ ) { 31 t=sqrt(cou-a*a); 32 if(t==floor(t)) { 33 b=(long long)floor(t); 34 if(a!=b&&gcd(a,b)==1) ans++; 35 } 36 } 37 } 38 } 39 printf("%lld\n",ans*4+4); 40 return 0; 41 }
标签:dog detail net lld out com user center csdn
原文地址:http://www.cnblogs.com/Doggu/p/BZOJ1041.html