zoukankan
html css js c++ java
同余问题2(超详细!!!)
中国剩余定理
问题:求解同余方程组
其中m1,m2,m3...mk 为
两两互质
的整数,求x的最小非负整数解.
代码:
习题:
洛谷 P3868 [TJOI2009]猜数字【中国剩余定理】
例题:
曹冲养猪(信息学奥赛一本通 1634)
【题目描述】
自从曹冲搞定了大象以后,曹操就开始琢磨让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲很不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。 举个例子,假如有 16 头母猪,如果建了 3个猪圈,剩下 1 头猪就没有地方安家了;如果建造了 5 个猪圈,但是仍然有 1 头猪没有地方去;如果建造了 7 个猪圈,还有 2 头没有地方去。你作为曹总的私人秘书理所当然要将准确的猪数报给曹总,你该怎么办?
【输入】
第一行包含一个整数 n,表示建立猪圈的次数; 接下来 n 行,每行两个整数 ai,bi,表示建立了 ai个猪圈,有 bi头猪没有去处。你可以假定 ai,aj 互质。
【输出】
输出仅包含一个正整数,即为曹冲至少养猪的数目。
【输入样例】
3 3 1 5 1 7 2
【输出样例】
16
扩展中国剩余定理
问题:求解同余方程组
其中m1,m2,m3...mk 为
不一定两两互质
的整数,求x的最小非负整数解。
例题:
Strange Way to Express Integers(信息学奥赛一本通 1635)
【题目描述】
给定 2n个正整数 a1,a2,⋯, an和 m1,m2,⋯,mn ,求一个最小的正整数 x,满足 ∀i∈[1,n],x≡ai (mod mi),或者给出无解。
【输入】
多组数据。 每组数据第一行一个整数 n; 接下来 n 行,每行两个整数 mi,ai 。
【输出】
对于每组数据,若无解,输出 −1;否则输出一个非负整数,若有多解,输出最小的满足条件的答案。
【输入样例】
2 8 7 11 9
【输出样例】
31
高次同余方程
BSGS(Baby Step Giant Step)算法
,又称
大小步算法
,其主要用于解形如
的高次同余方程中的 x,其核心思想是分块。 当 C为质数时,通过
费马小定理
:
可知,当x>=C-1时,会出现一个循环节,保证答案 x 若存在,必然有x<C-1
因此,当 C 比较小时,可使用暴力,直接令从 0 枚举到 C-1,检验其是否为方程的解,而当 C 比较大时,使用暴力会 TLE,此时可以采用 BSGS 算法来求解 x,其时间复杂度是sqrt(n) 级别的.
朴素的 BSGS 算法
只能处理 C 是质数的情况,
扩展的 BSGS
通过同余性质消因子来解决 C 不是质数的情况。
--->关于“
map
”,不太清楚的话可以参考
这里
例题:
计算器(信息学奥赛一本通 1636)
【题目描述】
你被要求设计一个计算器完成以下三项任务: 1、给定 y,z,p,计算 y^zmod p 的值; 2、给定 y,z,p,计算满足 x×y≡z (mod p) 的最小非负整数 x; 3、给定 y,z,p,计算满足 y^x≡z (mod p ) 的最小非负整数 x。
【输入】
输入包含多组数据。 第一行包含两个正整数 T,K分别表示数据组数和询问类型(对于一个测试点内的所有数据,询问类型相同); 以下 T 行每行包含三个正整数 y,z,p描述一个询问。
【输出】
对于每个询问,输出一行答案。 对于询问类型 2 和 3,如果不存在满足条件的,则输出 Orz, I cannot find x! ,注意逗号与 I 之间有一个空格。
【输入样例】
3 1 2 1 3 2 2 3 2 3 3
【输出样例】
2 1 2
我的博客前面还有
同余问题1
哦
查看全文
相关阅读:
Java读取Excel文件的几种方法
PowerDesigner的安装和数据库创建(转载)
JAVA UUID 生成
Mysql的“Limit”操作
实现java 中 list集合中有几十万条数据,每100条为一组取出
MySQL5中大数据错误:Packet for query is too large (****** > ******). You can change this value on the server by setting the max_allowed_packet' variable.;
Mybatis 示例之 foreach
JAVA WEB ------ 文件下载及导出数据到office Execl表格
8 -- 深入使用Spring -- 4...3 AOP的基本概念
8 -- 深入使用Spring -- 4...2 使用AspectJ实现AOP
原文地址:https://www.cnblogs.com/ljy-endl/p/11404360.html
最新文章
Visual Assist X助手的一些使用技巧和快捷键
缓存更新的套路
wireshark基本用法及过虑规则
docker运行oracle11g
devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free data blocks
oracle mysql sqlserver 基本操作命令
linux删除乱码文件
极客时间-左耳听风-程序员攻略-前端性能优化和框架
极客时间-左耳听风-程序员攻略-前端基础和底层原理
极客时间-左耳听风-程序员攻略-机器学习和人工智能
热门文章
极客时间-左耳听风-程序员攻略-容器化和自动化运维
极客时间-左耳听风-程序员攻略-微服务
Python扫描器-常用库-Request
Python扫描器-HTTP协议
nmap探测大网络空间中的存活主机
Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)
C#登录SSH执行命令,下载文件
poi中getPhysicalNumberOfRows()和getLastRowNum()区别
POI中getLastRowNum() 和getLastCellNum()的区别 hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
List<?>和List<T>的区别?
Copyright © 2011-2022 走看看