POJ 1840 Eps 简单Hash
2012-04-03 14:04
260 查看
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0
对于这个等式,给出了a1到a5,最后求有多少组X1---X5满足这个等式,其中所有的Xi都是不能等于0的。
然后每个Xi的范围是-50到50。这个数据范围是能hash的保证。
分成两组,前3个X是一组,后两个一组。
对于这个等式,给出了a1到a5,最后求有多少组X1---X5满足这个等式,其中所有的Xi都是不能等于0的。
然后每个Xi的范围是-50到50。这个数据范围是能hash的保证。
分成两组,前3个X是一组,后两个一组。
/* ID: sdj22251 PROG: LANG: C++ */ #include <iostream> #include <vector> #include <list> #include <map> #include <set> #include <deque> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <cctype> #include <string> #include <cstring> #include <cmath> #include <ctime> #define MAXN 111111 #define MAXM 104444 #define INF 100000000 #define PI acos(-1.0) #define eps 1e-12 #define L(X) X<<1 #define R(X) X<<1|1 using namespace std; char hash[25000005]; int a[6]; int main() { memset(hash, 0, sizeof(hash)); for(int i = 0; i < 5; i++) scanf("%d", &a[i]); for(int i = -50; i <= 50; i++) { if(i == 0) continue; for(int j = -50; j <= 50; j++) { if(j == 0) continue; for(int k = -50; k <= 50; k++) { if(k == 0) continue; int tmp = i * i * i * a[0] + j * j * j * a[1] + k * k * k * a[2]; if(tmp > 12500000 || tmp < -12500000) continue; hash[tmp + 12500000]++; } } } int ans = 0; for(int i = -50; i <= 50; i++) { if(i == 0) continue; for(int j = -50; j <= 50; j++) { if(j == 0) continue; int tmp = -(i * i * i * a[3] + j * j * j * a[4]); ans += hash[tmp + 12500000]; } } printf("%d\n", ans); return 0; }
相关文章推荐
- poj 1840 简单hash。
- poj 1840 简单hash。
- poj 1840 简单hash
- POJ 1840 Eqs(简单hash入门)
- POJ 1840 - Hash
- POJ-1840 Eqs【Hash】
- POJ 1840 Hash 效率就是高~ 空间就是费
- POJ Eps(1840)-分组&枚举
- POJ 1840 双向搜索 +Hash
- poj 1840hash
- POJ 1840 Eqs(hash)
- POJ 1840 Eqs (Hash)
- POJ 3690 Constellations 简单hash
- POJ题目1840 Eqs(hash)
- poj-1840-Eqs 哈希(hash)
- POJ 1200 Crazy Search(字符串简单的hash)
- POJ1840: Eqs(hash问题)
- POJ - 1840 hash去重
- 经典hash. POJ 1840
- poj 1840 Eqs (Hash)