首页 > 代码库 > hdu 1496 equations

hdu 1496 equations

好像是哈希吧 直接枚举绝对会超时

要分为两组 先把ab记录

然后求出对应的cd

 

这题其实还有很多不解的地方

比如结尾的 *16

还有神奇的stl

 

#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<queue>#include<stack>#define mem(a,b) memset(a,b,sizeof(a))#define ll __int64#define MAXN 1000#define INF 0x7ffffff#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int num1[12000];int main(){    int a,b,c,d,i,j;    while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)    {               int coun=0;        for(i=1;i<=100;i++)        {            for(j=1;j<=100;j++)            {                num1[coun++]=a*i*i+b*j*j;            }        }        sort(num1,num1+coun);        int cnt=0;        for(i=1;i<=100;i++)        {            for(j=1;j<=100;j++)            {                int t;                int temp=c*i*i+d*j*j;                if(t=(upper_bound(num1,num1+coun,-temp)-lower_bound(num1,num1+coun,-temp)))                cnt+=t;            }        }        printf("%d\n",cnt*16);    }    return 0;}