1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 using namespace std; 5 int sum; 6 long long R; 7 bool pan(int a1,double a4) 8 { 9 int a2=floor(a4); 10 if(a2!=a4) 11 return 0; 12 int a3=a1%a2; 13 for(;a3;) 14 { 15 a1=a2; 16 a2=a3; 17 a3=a1%a2; 18 } 19 if(a2==1&&a1!=a2) 20 return 1; 21 return 0; 22 } 23 int main() 24 { 25 scanf("%lld",&R); 26 for(int i=1;i<=sqrt(2*R);i++) 27 if((2*R)%i==0) 28 { 29 for(int a=1;a<=sqrt((2*R)/(2*i));a++) 30 if(pan(a,sqrt(((2*R)/i)-a*a))) 31 sum++; 32 if((2*R)/i!=i) 33 for(int a=1;a<=sqrt(i/2);a++) 34 if(pan(a,sqrt(i-a*a))) 35 sum++; 36 } 37 printf("%d\n",4*sum+4); 38 }
这是个脑洞大开的数学题 http://blog.csdn.net/csyzcyj/article/details/10044629