博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1840 Eqs
阅读量:6259 次
发布时间:2019-06-22

本文共 2409 字,大约阅读时间需要 8 分钟。

 

Eqs
Time Limit: 5000MS   Memory Limit: 65536K
Total Submissions: 15010   Accepted: 7366

 

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

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

 

按要求模拟即可

hash是个神奇的东西

下方代码注释部分是先三层循环后二层,正文部分是先二层循环后三层。两者都是正解,但是由于list插入比读取慢,先二层更快

1 /* 2 #include
3 #include
4 #include
5 #include
6 #include
7 using namespace std; 8 const int mxn=14997; 9 list
ha[mxn*2];10 list
::iterator it;11 int x,x1,x2,x3,x4,x5;12 int ans=0;13 int main(){14 scanf("%d%d%d%d%d",&x1,&x2,&x3,&x4,&x5);15 int i,j,k;16 for(i=-50;i<=50;i++)17 for(j=-50;j<=50;j++)18 for(k=-50;k<=50;k++){19 if(i==0||j==0||k==0)continue;20 x=i*i*i*x1+j*j*j*x2+k*k*k*x3;21 ha[x%mxn+mxn].push_back(x);//hash //x%mxn+mxn保证hash完以后是正数 22 }23 for(i=-50;i<=50;i++)24 for(j=-50;j<=50;j++){25 if(i==0|j==0)continue;26 x=-(i*i*i*x4+j*j*j*x5);27 //检查hash28 for(it=ha[x%mxn+mxn].begin();it!=ha[x%mxn+mxn].end();it++ ){29 if(*it==x)ans++;30 } 31 }32 printf("%d",ans);33 return 0;34 35 }36 */37 #include
38 #include
39 #include
40 #include
41 #include
42 using namespace std;43 const int mxn=14997;44 list
ha[mxn*2];45 list
::iterator it;46 int x,x1,x2,x3,x4,x5;47 int ans=0;48 int main(){49 scanf("%d%d%d%d%d",&x1,&x2,&x3,&x4,&x5);50 int i,j,k;51 for(i=-50;i<=50;i++)52 for(j=-50;j<=50;j++)53 {54 if(i==0||j==0)continue;55 x=i*i*i*x1+j*j*j*x2;56 ha[x%mxn+mxn].push_back(x);//hash //x%mxn+mxn保证hash完以后是正数 57 }58 for(i=-50;i<=50;i++)59 for(j=-50;j<=50;j++)60 for(k=-50;k<=50;k++){61 if(i==0|j==0||k==0)continue;62 x=-(i*i*i*x3+j*j*j*x4+k*k*k*x5);63 //检查hash64 for(it=ha[x%mxn+mxn].begin();it!=ha[x%mxn+mxn].end();it++ ){65 if(*it==x)ans++;66 } 67 }68 printf("%d",ans);69 return 0;70 71 }

 

niconiconi

 

转载于:https://www.cnblogs.com/SilverNebula/p/5550601.html

你可能感兴趣的文章
拦截器的执行顺序
查看>>
GestureDetector类及其用法
查看>>
String+变量”的操作是在运行时进行
查看>>
springboot入门 —— 报错
查看>>
计算器作业(摘要算法)
查看>>
嵌入式 Linux 学习 之路
查看>>
tornado 10 长轮询和 websocket
查看>>
CSU - 1356 Catch (判奇环)
查看>>
在多线程中使用静态方法是否有线程安全问题(转载)
查看>>
使用jmeter 做个简单的接口测试
查看>>
CSS对浏览器的兼容性(IE和Firefox)技巧整理
查看>>
Poj 2388 Who's in the Middle
查看>>
springboot与redis
查看>>
读《Cassandra权威指南》
查看>>
Xmanager连接linux
查看>>
Android开发教程 --- 数据存储 SQLite
查看>>
北大acm1006
查看>>
大数据环境下的数据质量管理策略
查看>>
vue中使用monaco-editor打包文件混乱的问题
查看>>
下载PhantomJS
查看>>