题目大意:给定高次方程an*x^n...a1*x^1a0*x^0=0 求[1,m]区间内有多少个整数根 ai=10^10000,m=100W 懒得高精,考场上写的long double乱搞……30分打底50分顶天QAQ 当我终于搞定了各种非官方数据之后,我只能长跪大地,手捧鲜花,仰望上苍高喊:哈希大法好!
题目大意:给定高次方程an*x^n+...+a1*x^1+a0*x^0=0 求[1,m]区间内有多少个整数根
ai
懒得高精,考场上写的long double乱搞……30分打底50分顶天QAQ
当我终于搞定了各种非官方数据之后,我只能长跪大地,手捧鲜花,仰望上苍高喊:哈希大法好!
首先阿贝尔在200年前告诉我们 五次以上方程没有求根公式 于是我们只能枚举1~m 这个是100W
然后100W再加上1W位的精度 都不用运算直接就是跪…… 怎么办呢QAQ
哈希大法好!
令f(x)=an*x^n+...+a1*x^1+a0*x^0 易知若f(x)=0 则f(x) mod p=0
反之如果f(x) mod p=0 那么我们基本可以得出f(x)=0 p比较靠谱的时候碰撞率极低
所以我们把所有的ai都对p取模 然后对于每个解O(n)验证即可
这样是O(m*n)的 可以拿到70分 p比较靠谱的话不会挂
那么100分怎么办呢?
哈希大法好!
我们很容易就会发现f(x+p) mod p=f(x) mod p
于是我们选择一个小一些的p,预处理出0~p-1所有的f(x),然后超过p的取模即可
但是p不够大会挂啊!
于是我们多选择几个p 分别取一遍mod 只有一个值对所有的p取模之后全都0才算作解
哈希大法好!Hash Killer III至今无人AC就是在证明这个算法的正确性!哈希万岁!哈希赛高!哈希万年推!
时间复杂度O(nΣp+m) 其中Σp是选择的所有质数之和 一般选择1W左右的质数就行了
不知道为什么不管考场上拿了多少分只要回来把题切了就算做精神AC了0.0……
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define M 110 using namespace std; typedef long long ll; const int prime[]={10007,11261,14843,19997,21893}; int n,m,stack[1001001],top; ll a[M][5],f[21893][5]; inline ll F(int x,int j) { int i; ll re=0; for(i=n;~i;i--) re=(re*x+a[i][j])%prime[j]; return re; } inline void Input(int x) { static char s[10100]; int i,j; bool flag=false; scanf("%s",s+1); for(i=1;s[i];i++) { if(s[i]=='-') flag=true; else for(j=0;j>n>>m; for(i=0;i<br> <br> </algorithm></iostream></cstring></cstdio>

Hash操作//为hash表中的字段赋值。成功返回1,失败返回0。若hash表不存在会先创建表再赋值,若字段已存在会覆盖旧值。$ret=$redis->hSet('user','realname','jetwu');//获取hash表中指定字段的值。若hash表不存在则返回false。$ret=$redis->hGet('user','rea

尽管机器学习从20世纪50年代就已经存在,但随着计算机变得越来越强大,数据在爆炸式增长,使得人们如何利用人工智能获得竞争优势、提高洞察力和增长利润展开了广泛的实践。对于不同的应用场景,机器学习与微分方程都有着广泛的场景。 大家都已经使用机器学习了,尤其是基于神经网络的深度学习,chatGPT甚嚣尘上,还需要深入理解微分方程么?不论答案是啥,都会涉及到二者的对比,那么,机器学习与微分方程的区别又是什么呢?从爱情模型的微分方程说起这两个方程预测了夫妻恋爱关系的长久性,基于心理学家 John Got

Laravel是目前最为流行的PHPweb框架之一,为开发人员提供了许多强大的功能和组件,其中LaravelHash也是其中之一。LaravelHash是一个用于密码散列的PHP库,其可以用于保护密码的安全,并使应用程序的用户数据更加安全。在本文中,我们将了解LaravelHash的工作原理以及如何使用它来对密码进行散列和验证。前置知识在学习Lara

一、什么是哈希算法哈希和散列都来源于单词hash,前者是音译,后者是意译。是一种可以将任意长度的二进制值映射为固定长度二进制值的算法,映射后固定长度的二进制值被称为哈希值。一个优秀的哈希算法需要满足以下几点要求:不能从哈希值反向推导出原始数据;对输入数据非常敏感,一个bit不同就会导致哈希值非常不一样;散列冲突的概率要很小;哈希算法的计算过程要足够简单高效,即使原始数据很长,也能很快得到哈希值;二、哈希算法的使用场景2.1 安全加密比较常见的哈希加密算法有MD5(MD5 Message-Dige

散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)(称为散列函数),计算出对应的函数值来

研究者们希望通过机器学习方法,直接从高维非线性数据中自动挖掘最有价值和最重要的内在规律(即挖掘出问题背后以 PDE 为主的控制方程),实现自动知识发现。近日,东方理工、华盛顿大学、瑞莱智慧和北京大学等机构的研究团队提出了一种基于符号数学的遗传算法 SGA-PDE,构建了开放的候选集,可以从数据中直接挖掘任意形式的控制方程。实验表明,SGA-PDE 不但可以从数据中挖掘到 Burgers 方程(具有交互项),Korteweg–de Vries 方程(KdV,具有高阶导数项),和 Chafee-In

Redis是一种常见的高性能键值存储数据库。它支持多种数据类型,如字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sortedset),并提供各种命令来操作这些数据类型。在本文中,我们将深入了解三种最常用的Redis数据类型:key,string和hash,并介绍它们的常见命令。keyRedis的key是字符串类型,可

在当前数字化时代,互联网已经成为人们生活中不可或缺的一部分。对于那些经常使用互联网进行工作、学习或娱乐的人来说,拥有一台性能强大的电脑至关重要。本文将从多个方面向大家介绍全能网站电脑的推荐配置,帮助您选择适合自己需求的电脑处理器处理器是电脑的核心组件之一,它决定了电脑的运行速度和性能。对于全能网站电脑来说,选择一个合适的处理器非常重要。多核心处理器适合处理多任务,而高主频的处理器可以提供更快的运算速度。例如,英特尔的i7系列处理器具有强大的多核心性能和高主频,非常适合用于复杂的网站开发和设计工作


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Dreamweaver Mac version
Visual web development tools

SublimeText3 Chinese version
Chinese version, very easy to use

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version
SublimeText3 Linux latest version
