Eqs
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 7551 | Accepted: 3698 |
Description
Consider equations having the following form:
a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=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.
a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=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.
这个题。。。我承认我弱爆了。。。。
a[1]*num[i]+a[2]*num[j]+a[3]*num[k] = a[4]*num[i]+a[5]*num[j]
HASH我都没开。。。。直接开了2600W short int,没想到竟然就AC了
#include<stdio.h>
#include<string.h>
#define maxn 13000000
#define maxn2 26000000
#define f(i) (i + maxn)
short sum[maxn2] = {0};
int num[101] = {0},a[6] = {0};
void init()
{
int i,j;
for(i = 1;i <= 5;i++)
scanf("%d",&a[i]);
for(i = 1;i <= 50;i++) {
num[i] = i*i*i;
num[i+50] = -num[i];
}
}
void work()
{
int i,j,k,ans = 0;
for(i = 1;i <= 100;i++)
for(j = 1;j <= 100;j++)
for(k = 1;k <= 100;k++)
if (f(a[1]*num[i]+a[2]*num[j]+a[3]*num[k]) > 0 && f(a[1]*num[i]+a[2]*num[j]+a[3]*num[k]) < maxn2)
sum[f(a[1]*num[i]+a[2]*num[j]+a[3]*num[k])]++;
for(i = 1;i <= 100;i++)
for(j = 1;j <= 100;j++)
ans += sum[f(a[4]*num[i]+a[5]*num[j])];
printf("%d\n",ans);
}
int main()
{
init();
work();
return 0;
}