POJ1840 Eqs
题意描述
求一个五元方程 \(a_1x_1^3+a_2x_2^3+a_3x_3^3+a_4x_4^3+a_5x_5^3=0\) 的解的个数。
题中给出 \(a_i\) 的值并且保证 \(-50\leq a_i,x_i\leq 50,x_i\neq 0\)。(\(1\leq i\leq 5\))
算法分析
考虑暴力枚举,发现复杂度 \(100^5=10^{10}\),T 到飞起。
移项后变为:\(a_1x_1^3+a_2x_2^3+a_3x_3^3=-(a_4x_4^3+a_5x_5^3)\)。
可以考虑分两次枚举等式两边的值,通过 Hash 判断是否相等即可。
真·神仙思路。
代码实现
注意卡常啊,STL 的 vector/map 用不得。
这里不能判重哦,相等的也要加进去。(肯定是不同情况)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define N 100010
#define M 6000010
#define MOD 99991
using namespace std;
int a1,a2,a3,a4,a5,head[N],cnt=0;
struct Edge{
int nxt,to;
}ed[M];
int read(){
int x=0,f=1;char c=getchar();
while(c<'0' || c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0' && c<='9') x=x*10+c-48,c=getchar();
return x*f;
}
void init(){
a1=read(),a2=read(),a3=read(),a4=read(),a5=read();
return;
}
int Abs(int x){
return x>0?x:-x;
}
void insert(int x){
int p=Abs(x)%MOD;
ed[++cnt].nxt=head[p];
ed[cnt].to=x;
head[p]=cnt;
return;
}
void pre_work(){
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 now=a1*i*i*i+a2*j*j*j+a3*k*k*k;
insert(now);
}
return;
}
int search(int now){
int p=Abs(now)%MOD,sum=0;
for(int i=head[p];i;i=ed[i].nxt)
if(now==ed[i].to) sum++;
return sum;
}
int main(){
init();
pre_work();
long long ans=0;
for(int i=-50;i<=50;i++)
for(int j=-50;j<=50;j++){
if(i==0 || j==0) continue;
int now=a4*i*i*i+a5*j*j*j;
ans+=search(-now);
}
printf("%d\n",ans);
return 0;
}
完结撒❀。
POJ1840 Eqs的更多相关文章
- POJ1840: Eqs(hash问题)
一道典型的hash问题: 已知a1,a2,a3,a4,a5,求有多少种不同的<x1,x2,x3,x4,x5>组合满足等式: a1*x1^3 + a2*x2^3 + a3*x3^3 + a4 ...
- poj1840 Eqs(hash+折半枚举)
Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 The co ...
- POJ 1840 Eqs
Eqs Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 15010 Accepted: 7366 Description ...
- Eqs
Eqs 题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=15029 题意: 给出系数a1,a2,a3,a4,a5,求出 ...
- POJ1840 hash
POJ1840 问题重述: 给定系数a1,a2, ..,a5,求满足a1 * x1 ^ 3 + a2 * x2 ^ 3 +... + a5 * x5 ^ 3 = 0的 xi 的组数.其中ai, xi都 ...
- 【POJ】1840:Eqs【哈希表】
Eqs Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 18299 Accepted: 8933 Description ...
- 測试赛C - Eqs(哈希)
C - Eqs Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- poj1840
Eqs Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 15133 Accepted: 7426 Description ...
- POJ-1840 Eqs---二分
题目链接: https://vjudge.net/problem/POJ-1840 题目大意: 给出一个5元3次方程,输入其5个系数,求它的解的个数 其中系数 ai∈[-50,50] 自变量xi∈[ ...
随机推荐
- c#后台代码请求访问api接口
前言:最近公司项目与外部api接口对接较多 ,写下自己的代码总结.介绍两种访问方式(HttpClient.HttpWebRequest) 一.HttpWebRequest 访问Api private ...
- 常见加密算法的 JS 实现
前言 为破解前端加密做准备,先了解一些常见的加密算法 分类 对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. DES DES ...
- Python练习题 007:兔子生兔子
[Python练习题 007] 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? ----------------- ...
- Java知识系统回顾整理01基础02面向对象01类和对象
一.面向对象实例--设计英雄这个类 LOL有很多英雄,比如盲僧,团战可以输,提莫必须死,盖伦,琴女 所有这些英雄,都有一些共同的状态 比如,他们都有名字,hp,护甲,移动速度等等 这样我们就可以设计一 ...
- Windows 无法验证此设备所需的驱动程序的数字签名”的问题
转载: 1.https://jingyan.baidu.com/article/375c8e19c2b25b25f2a229a3.html 2. https://jingyan.baidu.com/a ...
- 如何使用MATLAB对图片的RGB三种颜色进行提取
参考: https://jingyan.baidu.com/article/456c463b41de5f0a5831448e.html matlab在图像处理方面,具有很强大的应用.下面将分享如何使用 ...
- C++extern关键字理解
extern是一种"外部声明"的关键字,字面意思就是在此处声明某种变量或函数,在外部定义. 下面的示意图是我的理解. extern关键字的主要作用是扩大变量/函数的作用域,使得其它 ...
- 上帝视角一文理解JavaScript原型和原型链
本文呆鹅原创,原文地址:https://juejin.im/user/307518987058686/posts 前言 本文将从上帝角度讲解JS的世界,在这个过程中,大家就能完全理解JS的原型和原型链 ...
- 踩坑 Pycharm 2020.1.1 安装/ JetBrains破解/ anacode配置
引言 网上的办法试了很多,通常不能解决问题,还会引发一些负效应,选取了一个试了两天终于成功的方案记录一下备用. Pycharm安装 https://www.jetbrains.com/pycharm/ ...
- docker-compose应用
docker-compose应用 需求编写compose模板文件,实现同时启动tomcat.mysql.redis容器. 1.编写模板文件 #新建文件夹mkdir -p /tzh/compose_te ...