问题重述:
给定系数a1,a2, ..,a5,求满足a1 * x1 ^ 3 + a2 * x2 ^ 3 +... + a5 * x5 ^ 3 = 0的 xi 的组数。其中ai, xi都在[-50, 50]内,且xi != 0。
算法:
1)用h[i]记录满足a1 * x1 ^3 + a2 * x2 ^ 3 = i 的x1, x2组数。
2)令ans = 0, 循环x1, x2, x3的值,若 tmp = a3 * x3^3 + a4 * x4^3 + a5 * x5^3, h[-tmp] != 0, 则 ans += h[-tmp]。
AC代码
#include <iostream> #include <cstring> #include <cstdio> using namespace std; ; ; short h[maxn]; ]; void _hash() { memset( h, , sizeof(h) ); ; i <= ; i++) { ) continue; ; j <= ; j++) { ) continue; h[a[] * i * i * i + a[] * j * j * j + offset]++; } } } int main() { ; i < ; i++) cin >> a[i]; _hash(); ; ; i <= ; i++) ; j <= ; j++) ; k <= ; k++) { ) { ] * i * i * i + a[] * j * j * j + a[] * k * k * k; ) ) ans += h[offset - tmp]; } } cout << ans << endl; ; }