数学题。。丢链接跑。。http://blog.csdn.net/csyzcyj/article/details/10044629
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#define ll long long
using namespace std;
ll r,ans=0;
int a,d;
int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
bool check(int a,int d)
{
double b=sqrt(d-a*a);
if (floor(b)!=b||a==(int)b) return false;
return gcd(a*a,b*b)==1;
}
int main()
{
cin>>r;
for (d=1;d<=floor(sqrt(2)*sqrt(r));d++)
if (((2%d)*(r%d))%d==0)
{
for (a=1;a<=sqrt(r/d);a++)
if (check(a,2*r/d)) ans++;
if (d!=2*r/d)
for (a=1;a<=sqrt(d/2);a++)
if (check(a,d)) ans++;
}
cout<<4*ans+4;
}