POJ 1840 Eqs 暴力哈希

用short

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>

using namespace std;

 short has[25000000];//上限爲15000000,把負數全都移到15000000之後

int main()
{
    int a[5];
    int i, j, k;
    for(i = 0;i < 5;i++){
        scanf("%d", &a[i]);
    }
    int sum;
    for(i = -50;i <= 50;i++){
        if(!i)  continue;
        for(j = -50;j <= 50;j++){
            if(!j)  continue;
            sum = a[0]*i*i*i + a[1]*j*j*j;
            if(sum < 0) sum +=25000000;
            has[sum]++;
        }
    }
    int Sum = 0;
    for(i = -50;i <= 50;i++){
        if(!i)  continue;
        for(j = -50;j <= 50;j++){
            if(!j)   continue;
            for(k = -50;k<=50;k++){
                if(!k)  continue;
                sum = a[2]*i*i*i+a[3]*j*j*j+a[4]*k*k*k;
                if(sum < 0) sum += 25000000;
                Sum +=has[sum];
            }
        }
    }
    printf("%d\n", Sum);

    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章