# hdu1496 Equations Hash

347人阅读 评论(0)

Consider equations having the following form:

a*x1^2+b*x2^2+c*x3^2+d*x4^2=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.

#include<cstdlib>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#define maxn 2000003
using namespace std;
int hash[maxn];
int map[110];
int main()
{
int a,b,c,d;
for(int i=1;i<101;i++)
map[i]=i*i;
while(cin>>a>>b>>c>>d)
{
if((a>0&&b>0&&c>0&&d>0)||(b<0&&a<0&&c<0&&d<0))
{
cout<<"0"<<endl;
continue;
}
memset(hash,0,sizeof(hash));
for(int i=1;i<101;i++)
for(int j=1;j<101;j++)
{
hash[a*map[i]+b*map[j]+500000]++;
}
int ans=0;
for(int i=1;i<101;i++)
for(int j=1;j<101;j++)
{
ans+=hash[-c*map[i]-d*map[j]+500000];
}
cout<<ans*16<<endl;
}
}


0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：48083次
• 积分：1310
• 等级：
• 排名：千里之外
• 原创：86篇
• 转载：7篇
• 译文：0篇
• 评论：6条
最新评论