HDU 1496 Equations[HASH]

分析: 和 poj  1840很像,用poj 的方法跑了960多毫秒,用 lzsz1212 大牛的方法跑了 200多毫秒

View Code
#include<stdio.h>
#include<string.h>
int h[2000000];
const int di=1000000;
int main()
{
    int p[101];
    int i,j,a,b,c,d,sum;
    for(i=1;i<=100;i++)
    p[i]=i*i;
    while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
    {
        for(i=1;i<=100;i++)
            for(j=1;j<=100;j++)
                h[p[i]*a+p[j]*b+di]++;
        sum=0;
        for(i=1;i<=100;i++)
            for(j=1;j<=100;j++)
                sum+=h[di-p[i]*c-p[j]*d];
        for(i=1;i<=100;i++)
            for(j=1;j<=100;j++)
                h[p[i]*a+p[j]*b+1000000]--;
        printf("%d\n",sum<<4);
    }
    return 0;
}

 

 

posted @ 2012-04-24 21:26  'wind  阅读(132)  评论(0编辑  收藏  举报