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

posted on 2016-03-01 22:26  xiyuedong  阅读(142)  评论(0编辑  收藏  举报