POJ1840Eqs(哈希表)
来源:互联网 发布:勿谓言之不预也 知乎 编辑:程序博客网 时间:2024/06/07 08:00
Eqs
Time Limit: 5000MS Memory Limit: 65536K
Total Submissions: 16763 Accepted: 8223
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
Source
思路:分成两段循环降低时间复杂度,避免超时。
#include <stdio.h>#include <string.h>int hash[25000001];int main(){ int a1,a2,a3,a4,a5,x1,x2,x3,x4,x5,sum; while(~scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5)) { memset(hash,0,sizeof(hash)); for(x1 = -50; x1<=50; x1++) { if(!x1) continue; for(x2 = -50; x2<=50; x2++) { if(!x2) { //printf("x2=%d\n",x2); continue; } sum = -1*(a1*x1*x1*x1+a2*x2*x2*x2); if(sum<0) sum+=25000000;//数字下标没有负数,换一种出储存方式 hash[sum]++; } } int cnt = 0; for(x3 = -50; x3<=50; x3++) { if(!x3) continue; for(x4 = -50; x4<=50; x4++) { if(!x4) continue; for(x5 = -50; x5<=50; x5++) { if(!x5) continue; sum = a3*x3*x3*x3+a4*x4*x4*x4+a5*x5*x5*x5; if(sum<0) sum+=25000000; cnt+=hash[sum]; } } } printf("%d\n",cnt); } return 0;}
- POJ1840Eqs(哈希表)
- POJ1840Eqs(哈希)
- poj1840Eqs(哈希判重)
- poj1840Eqs【散列表】
- 哈希表(一)
- 哈希表(二)
- 散列表(哈希表)
- 哈希表(HashTable)
- C++ 哈希表(hashtable)
- 散列表(哈希表)
- 哈希表(散列表)
- Hashtables(哈希表)
- 哈希表(散列表)
- C# 哈希表(转)
- 哈希表(一)--定义
- 查找(哈希表)
- 散列表(哈希表)
- 散列表(哈希表)
- rockchip如何增加分区配置信息(6.0)--原创
- 函数链接性和语言链接性
- Java中的多线程图文详解
- Freebsd安装内核源码
- 深入理解JavaScript浏览器线程
- POJ1840Eqs(哈希表)
- (PHP)图片加文字和图片合成
- jq 遮罩层
- SEO基础知识:页面优化关键要点与基本思路
- C/S B/S
- Hex棋评估函数的设计
- CAS算法原理分析
- Linux文件目录和用户的管理
- HDU 6168 Numbers 思维