1 2 3 -4 1 1 1 1
39088 0
#include<stdio.h>
int main()
{
	int a,b,c,d,i,j,k,count,l,s1,s2;
	int pow[110];
	while(~scanf("%d%d%d%d",&a,&b,&c,&d))
	{
		count=0;
		for(i=1;i<101;++i)
		pow[i]=i*i;
		if(a>0&&b>0&&c>0&&d>0||a<0&&b<0&&c<0&&d<0)
		{
			printf("0\n");
			continue;
		}
		for(i=1;i<101;++i)
		{
			for(j=1;j<101;++j)
			{
				s1=a*pow[i]+b*pow[j];
				if(s1>0&&c>0&&d>0||s1<0&&c<0&&d<0)
				continue;
				for(k=1;k<101;++k)
				{
					s2=s1+c*pow[k];
					if(s2%d==0)
					{
						s2/=-d;
						if(s2>0)
						{
							for(l=1;l<101;++l)
							{
								if(s2==pow[l])
								{
									count++;
									break;
								}
							}
						}
					}
				}
			}
		}
		printf("%d\n",count*16);
	}
	return 0;
}
原文地址:http://blog.csdn.net/ice_alone/article/details/41857225