POJ 1840 Eqs
来源:互联网 发布:网络直播培训机构 编辑:程序博客网 时间:2024/06/05 03:13
本题主要就是一开始的想法,想到后就比较水了。(没想到啊。。。)解5元方程组,每个未知数从-50~50,先三个一组枚举所有可能值,记录下次数,剩下的两个一组,出现之前出现过的值即将总数加上当前值之前出现过的次数(因为未知数正负对称,找与自己相同的值亦可,不一定非要找相反数,不过没什么实际差别),记录出现次数时,因为范围较大,无法直接开数组,按下标对应记录。所以Hash下就行。
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N=1000000;const int hv=999983;int a1,a2,a3,a4,a5;int sum;struct Node{ int idx; int num;}r[N];int powerf(int x){ return x*x*x;}void hashf(int x){ int k=x%hv; if(k<0)k=k+hv; if(r[k].num!=0) { if(r[k].idx==x)r[k].num++; else { int z=k; while(r[z].num!=0) { if(r[z].idx==x) { r[z].num++; break; } z++; } if(r[z].num==0) { r[z].idx=x; r[z].num++; } } } else { r[k].idx=x; r[k].num++; }}void Find(int x){ int k=x%hv; if(k<0)k=k+hv; while(r[k].num!=0) { if(r[k].idx==x) { sum+=r[k].num; break; } k++; }}int main(){ sum=0; for(int i=0;i<N;i++) { r[i].num=0; r[i].idx=0; } scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5); for(int i=-50;i<=50;i++) { for(int j=-50;j<=50;j++) { for(int k=-50;k<=50;k++) { if(i==0||j==0||k==0)continue; int x=powerf(i)*a1+powerf(j)*a2+powerf(k)*a3; hashf(x); } } } for(int i=-50;i<=50;i++) { for(int j=-50;j<=50;j++) { if(i==0||j==0)continue; int x=powerf(i)*a4+powerf(j)*a5; Find(x); } } printf("%d\n",sum); return 0;}
- poj 1840 Eqs
- POJ 1840 Eqs
- poj 1840 Eqs
- POJ 1840 Eqs
- POJ 1840 Eqs hash
- POJ-1840 Eqs【Hash】
- poj 1840 Eqs 【hash】
- POJ 1840 Eqs
- poj-1840 Eqs
- POJ 1840 Eqs
- POJ 1840 Eqs
- poj 1840 Eqs
- POJ 1840 Eqs
- POJ 1840 Eqs
- POJ 1840(Eqs)
- POJ 1840 Eqs
- POJ 1840 Eqs
- POJ 1840 Eqs
- Web架构“圣经”-------HTTP权威指南--3
- 机器学习 -- Deep Learning
- 过TP保护与解除游戏驱动保护
- Chapter 2, Exercise 2.3-7
- 查找链表中倒数第k个结点
- POJ 1840 Eqs
- AOJ0118 Property Distribution 搜索
- iebook模板制作器与iebook模…
- 十月新疆:禾木
- 阿里Oracle DBA 笔试题(基础概念类)
- Oracle11gR2安装部署
- 分享视频:视频:英国公开大学&nbs…
- 查韦斯:天使还是魔鬼?
- JAVA为什么要配置环境变量,…