Description
Consider equations having the following form:
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0
The coefficients are given integers from the interval [-50,50].
It is consider a solution a system (x1, x2, x3, x4, x5) that verifies the equation, xi∈[-50,50], xi != 0, any i∈{1,2,3,4,5}.
Determine how many solutions satisfy the given equation.
Input
The only line of input contains the 5 coefficients a1, a2, a3, a4, a5, separated by blanks.
Output
The output will contain on the first line the number of the solutions for the given equation.
Sample Input
37 29 41 43 47
Sample Output
654
The meaning of problems
Entry number , seeking to satisfy 3 3 3 3 3 The number of the polynomial 。
answer
- layer solution is certainly the time complexity of the cycle of violence is not allowed, so the converted x13 x23 x33 x43 x53
- As can be seen, the upper limit of the range to satisfy the equation . 3, since the index can not be negative, increasing the unified array subscript
- Then the water is too violent ~~~
AC-Code
#inlcude<bits/stdc++.h>
using namespace std;
const int maxn = 12500000 << 1;
short h[maxn];
int main() {
const int mid = 12500000;
int a, b, c, d, e;
while (cin >> a >> b >> c >> d >> e) {
memset(h, 0, sizeof h);
int ans = 0;
for (int i = -50; i <= 50; ++i) {
if (!i) continue;
for (int j = -50; j <= 50; ++j) {
if (!j) continue;
++h[a * i * i * i + b * j * j * j + mid];
}
}
for (int i = -50; i <= 50; ++i) {
if (!i) continue;
for (int j = -50; j <= 50; ++j) {
if (!j) continue;
for (int k = -50; k <= 50; ++k) {
if (!k) continue;
if (-(c * i * i * i + d * j * j * j + e * k * k * k) + mid < maxn
and -(c * i * i * i + d * j * j * j + e * k * k * k) + mid >= 0)
ans += h[-(c * i * i * i + d * j * j * j + e * k * k * k) + mid];
}
}
}
cout << ans << endl;
}
return 0;
}