添加链接描述
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e4+5;
int f[maxn],g[maxn];
int hashs(int k){
int t=k%maxn;
if(t<0) t+=maxn;
while(f[t]&&g[t]!=k) t=(t+1)%maxn;
return t;
}
int main()
{
int sum,a,b,c,d;
int t[101];
for(int i=1;i<=100;i++){
t[i]=i*i;
}
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF){
if(a>0&&b>0&&c>0&&d>0||a<0&&b<0&&c<0&&d<0){
printf("0\n");
continue;
}
memset(f,0,sizeof(f));
sum=0;
int s,p;
for(int i=1;i<=100;i++){
for(int j=1;j<=100;j++){
s=a*t[i]+b*t[j];
p=hashs(s);
g[p]=s;
f[p]++;
}
}
for(int i=1;i<=100;i++){
for(int j=1;j<=100;j++){
s=-(c*t[i]+d*t[j]);
p=hashs(s);
sum+=f[p];
}
}
printf("%d\n",sum*16);
}
return 0;
}