poj 1840 哈希
来源:互联网 发布:mysql oracle 区别 编辑:程序博客网 时间:2024/05/22 10:58
Eqs
Time Limit: 5000MS Memory Limit: 65536KTotal Submissions: 14093 Accepted: 6927
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.
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
Source
#include<iostream> 49664K 610MS#include<cstdio>#include<cstring>using namespace std;short hash[25000001]; //hash[sum]表示值等于sum的的解的个数(多对1映射)int main() //用int会MLE<span id="transmark"></span>{ int a1,a2,a3,a4,a5; //系数 scanf("%d%d%d%d%d",&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); if(sum<0) sum+=25000000; hash[sum]++; } } int num=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>12500000||sum<-12500000) //防止特殊情况发生continue; if(sum<0) sum+=25000000; if(hash[sum]) num+=hash[sum]; } } } cout<<num<<endl; } return 0;}
#include<iostream> // 1164K 1704MS#include<cstdio>#include<map>using namespace std;int main(){ map<int,int>Q; int a,b,c,d,e; scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); Q.clear(); for(int i=-50; i<=50; i++) { if(!i) continue; for(int j=-50; j<=50; j++) { if(!j) continue;int sum=a*i*i*i+b*j*j*j;Q[-sum]++; } } int num=0; 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;int sum=c*i*i*i+d*j*j*j+e*k*k*k;if(Q.count(sum))num+=Q[sum];}}}printf("%d\n",num);}
1 0
- POJ 1840 (哈希)
- poj 1840 哈希~~~
- Eqs - POJ 1840 哈希
- poj 1840 哈希
- POJ 1840(哈希)
- Eqs poj 1840 哈希
- poj 1840 Eqs (哈希)
- POJ 1840 Eqs(哈希)
- POJ 1840 Eqs(哈希)
- poj-1840 Eqs 暴力+哈希
- poj 1840 哈希+离散化
- poj 1840 Eqs(哈希)
- POJ 1840 Eqs (哈希)
- POJ 1840 Eqs(模拟+哈希)
- POJ 1840
- POJ 1840
- POJ 1840
- POJ 1840
- LeetCode之Word Ladder
- hdu2838Cow Sorting(树状数组+逆序数)
- 分布式数据库一致性解决初步
- 从背后知道C语言程序是怎么运行的
- Android 本地头像的选取
- poj 1840 哈希
- Java Set接口的主要实现类HashSet
- 七夕节不撸代码你好意思说自己是程序猿
- 奔跑吧,我的JavaScript(1)
- 微信网页调试的各种方法
- 历史总是惊人的相似
- session和cookie区别
- 零基础学python-6.1 变量、对象与引用
- 2015年8月20日工作日志----------------赵鑫