poj-1840 Eqs

原创 2012年03月28日 23:20:31
                                                               D - Eqs
Crawling in process...Crawling failedTime Limit:5000MS    Memory Limit:65536KB    64bit IO Format:%I64d & %I64u

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
若是按照常规的做法从最小数一个个试的话,结果一定会超限。所以先计算几个数的值,放在hash表中,在计算另外的数的值,若两个值相减为0,就输出。
#include<iostream>
 using namespace std;
 
 short hash[25000001];
 
 int main(void)
 {
     int a1,a2,a3,a4,a5;
     while(cin>>a1>>a2>>a3>>a4>>a5)
     {
         memset(hash,0,sizeof(hash));
 
         for(int x1=-50;x1<=50;x1++)
         {
             if(!x1)
                 continue;
             
             for(int x2=-50;x2<=50;x2++)
             {
                 if(!x2)
                     continue;
                 int sum=(a1*x1*x1*x1 + a2*x2*x2*x2)*(-1);
                 if(sum<0)
                     sum+=25000000;
                 hash[sum]++;
             }
         }
 
         int solution=0;
 
         for(int x3=-50;x3<=50;x3++)
         {
             if(!x3)
                 continue;
             for(int x4=-50;x4<=50;x4++)
             {
                 if(!x4)
                     continue;
                 for(int x5=-50;x5<=50;x5++)
                 {
                     if(!x5)
                         continue;
                     int sum=a3*x3*x3*x3 + a4*x4*x4*x4 + a5*x5*x5*x5;
                     if(sum<0)
                         sum+=25000000;
                     if(hash[sum])
                         solution+=hash[sum];
                 }
             }
         }
 
         cout<<solution<<endl;
     }                
     return 0;
 }

相关文章推荐

POJ 1840 Eqs(简单hash入门)

题目链接:http://poj.org/problem?id=1840 CSUST 2012年暑假8月组队后第十二次个人赛:http://acm.hust.edu.cn:8080/judge/c...

poj 1840 Eqs

hash的应用,我直接映射了,差点超内存,听说有好的方法,这些数的范围还是很大的,-50^4*2·····50^4*2 ,但是最多才100*100个数,所以可以通过hash函数映射,懒得想了#inc...

poj 1840:Eqs

给定a1,a2,a3,a4,a5,求满足

POJ 1840 Eqs

思路:a1x1^3+ a2x2^3+ a3x3^3 = -(a4x4^3 + a5x5^3) 先求出右边能到达的值,对值进行hash,然后左边查询计数,这样比相反的顺序内存少用好多,时间也快不少 ...

STL的应用 POJ 1840 Eqs 题解

题目: Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0...

poj 1840 Eqs (哈希)

poj 1840 Eqs (哈希)

poj1840--Eqs

题目大意: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 所有的变量的范围是【-50,50】,都是整数,求有多少解,也就是多少种情况满足这个等式。 算法分析:   ...

POJ1840 - Eqs - 特征哈希

1.题目描述: Consider equations having the following form:  a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=...

POJ 1840 Eqs

唉,我的入门“hash” 题目链接:http://poj.org/problem?id=1840 CSUST 2012年暑假8月组队后第十二次个人赛:http://acm.hust.edu.cn:...

Poj 1840 Eqs(哈兮+复杂度)

Eqs Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 14031   Accepted: 6893 De...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj-1840 Eqs
举报原因:
原因补充:

(最多只允许输入30个字)