1.桶排
2.二分
主要是讲关系式分为左右两部分
Eqs | ||||||
| ||||||
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. | ||||||
Input | ||||||
For each test case : Line 1: Five coefficients a1, a2, a3, a4, a5, separated by blanks. Process to the end of file. | ||||||
Output | ||||||
For each test case : Line 1: A single integer that is the number of the solutions for the given equation.(The output will fit in 32 bit signed integers.) | ||||||
Sample Input | ||||||
37 29 41 43 47 | ||||||
Sample Output | ||||||
654 |
#include<stdio.h>
#include<string.h>
#define m 50*50*50*100*2
char ans[m+5];
int main()
{
int a,b,c,d,e;
while(~scanf("%d %d %d %d %d",&a,&b,&c,&d,&e))
{
memset(ans,0,sizeof(ans));
int z=0;
for(int i=-50; i<=50; i++)
{
if(i==0)continue;
for(int j=-50; j<=50; j++)
{
if(j==0)continue;
z=a*i*i*i+b*j*j*j;
if(z<0)
z+=m;
ans[z]++;
}
}
int zzz=0;
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;
z=c*i*i*i+d*j*j*j+e*k*k*k;
if(z<0)
z+=m;
if(ans[z])
zzz+=ans[z];
}
}
}
printf("%d\n",zzz);
}
}