方程式
方程式
Description
Consider equations having the following form: a*x1*x1 + b*x2*x2 + c*x3*x3 + d*x4*x4 = 0 a, b, c, d are integers from the interval [-50,50] and any of them cannot be 0. It is consider a solution a system ( x1,x2,x3,x4 ) that verifies the equation, xi is an integer from [-100,100] and xi != 0, any i ∈{1,2,3,4}. Determine how many solutions satisfy the given equation.
Sample Input
1 2 3 -4 1 1 1 1
Sample Output
39088 0
# include<iostream>//hash算法 # include<cstring> using namespace std; int hash1[1000003]; int hash2[1000003]; int main() { int a,b,c,d,count,i,j,s; while(cin>>a>>b>>c>>d) { count=0; if(a>0&&b>0&&c>0&&d>0||a<0&&b<0&&c<0&&d<0)//提高效率 cout<<"0"<<endl; else { memset(hash1,0,sizeof(hash1)); memset(hash2,0,sizeof(hash2)); for(i=1;i<=100;i++) for(j=1;j<=100;j++) { s=a*i*i+b*j*j; if(s>=0) hash1[s]++;//储存同一个和 else hash2[-s]++; } for(i=1;i<=100;i++) for(j=1;j<=100;j++) { s=c*i*i+d*j*j; if(s<=0) count+=16*hash1[-s];//找到对应的相反数 else count+=16*hash2[s]; } cout<<count<<endl; } } return 0; }
浙公网安备 33010602011771号