【Ybt OJ】[数学基础 第3章] 同余问题
「「「数学基础」」」第333章 同余问题
目录:
A.同余方程
B.约数之和
C.线性求逆元
D.中国剩余定理
A.A.A. 例题111 同余方程
分析:
拓展欧几里得(exgcd)(exgcd)(exgcd) 板子
由于要求最小正整数解 最后要对答案进行处理
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
ll a,b,x,y;
void exgcd(ll a,ll b)
{if(b==0){x=1;y=0;return;}exgcd(b,a%b);ll k=x;x=y;y=k-a/b*y;
}
int main()
{scanf("%lld%lld",&a,&b);exgcd(a,b);printf("%lld",(x%b+b)%b);return 0;}
B.B.B. 例题222 约数之和
分析:
唯一分解定理:
A=p1k1×p2k2×...×pnknA=p_1^{k_1}\times p_2^{k_2}\times...\times p_n^{k_n}A=p1k1×p2k2×...×pnkn
那么AB=p1k1×B×p2k2×B×...×pnkn×BA^B=p_1^{k_1\times B}\times p_2^{k_2\times B}\times...\times p_n^{k_n\times B}AB=p1k1×B×p2k2×B×...×pnkn×B
ABA^BAB的约数和为 ∏i=1n(∑j=0B×kipij)∏_{i=1}^n(\sum_{j=0}^{B\times k_i}p_i^j)∏i=1n(∑j=0B×kipij)
然后等比数列求和 ∏i=1n(piB×ki+1−1pi−1)∏_{i=1}^n(\frac{p_i^{B\times k_i+1}-1}{p_i-1})∏i=1n(pi−1piB×ki+1−1)
分子可以用快速幂求出 分母看是否与990199019901互质 不互质就是pi−1p_i-1pi−1的乘法逆元
如果互质 则pip_ipi modmodmod 9901=19901=19901=1 该项变为i∑j=0kj×B=ki×B+1i^{\sum_{j=0}^{k_j\times B}}=k_i\times B+1i∑j=0kj×B=ki×B+1 modmodmod 990199019901
CODE:
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const int Mod=9901;
ll prime[105],c[105],ans=1ll,A,B,tot;
void Div(int x) //分解质因子
{for(int i=2;i*i<=x;i++){if(x%i==0) prime[++tot]=i;while(x%i==0){c[tot]++;x/=i;} }if(x>1) {prime[++tot]=x;c[tot]=1; }
}
ll ksm(ll a,ll k)
{ll res=1;while(k){if(k&1) (res*=a)%=Mod;k>>=1;(a*=a)%=Mod;}return res;
}
int main()
{scanf("%lld%lld",&A,&B);Div(A);for(int i=1;i<=tot;i++){if((prime[i]-1)%Mod==0){ans=ans*(B*c[i]+1)%Mod;continue;}int tmp=ksm(prime[i],B*c[i]+1);tmp=(tmp-1+Mod)%Mod;int inv=prime[i]-1; inv=ksm(inv,Mod-2); //逆元ans=ans%Mod*inv*tmp%Mod;}printf("%lld",ans);return 0;
}
C.C.C. 例题333 线性求逆元
分析:
逆元线性递推公式 模板
CODE:
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
const int N=3e6+5;
int n,p,inv[N];
int main()
{scanf("%d%d",&n,&p);inv[1]=1;for(int i=2;i<=n;i++)inv[i]=(ll)(p-p/i)*inv[p%i]%p;for(int i=1;i<=n;i++)printf("%d\n",inv[i]); return 0;
}
D.D.D. 例题444 中国剩余定理
分析:
exgcd+CRTexgcd+CRTexgcd+CRT 板子
注意处理负数的
CODE:
#include<cmath>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll n,a[16],b[16],Mod=1,ans;
void exgcd(ll a,ll b,ll &x,ll &y)
{if(!b){x=1;y=0;return;}exgcd(b,a%b,x,y);int k=x;x=y;y=k-a/b*y;
}
int main()
{scanf("%lld",&n);for(int i=1;i<=n;i++){scanf("%lld%lld",&a[i],&b[i]);Mod*=a[i];}for(int i=1;i<=n;i++) //求方程组数{ll x=0,y=0;exgcd(Mod/a[i],a[i],x,y);(ans+=b[i]*Mod/a[i]%Mod*(x<0?x+a[i]:x))%=Mod;}printf("%lld",ans%Mod);return 0;
}
【Ybt OJ】[数学基础 第3章] 同余问题相关推荐
- 信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂
信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂 https://blog.csdn.net/mrcrack/article/details/82846727 快速幂取模算法如何实现? h ...
- YBT 6 数学基础
$补+写题ing$ 第 1 章 快速幂 序列的第 k 个数 link $solution:$ 板子 A 的 B 次方 link $solution:$ 板子 [NOIP2013] 转圈游戏 link ...
- 补充---信息安全数学基础第四章习题答案
补充-信息安全数学基础第四章习题答案 (补充了网上能找到的一些答案) 前三章的答案以后发吧~~~ 图片:
- 高职计算机基础教案ppt,计算机数学基础 高职计算机大类专业基础 郭宝玉 PPT计算机数学基础 第2章.ppt...
计算机数学基础 高职计算机大类专业基础 郭宝玉 PPT计算机数学基础 第2章.ppt (53页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 ...
- 【Ybt OJ】[数学基础 第2章] 质数与约数
「「「数学基础」」」第222章 质数和约数 目录: A.线性筛素数 B.质数距离 C.不定方程 D.反素数 E.余数之和 A.A.A. 例题111 线性筛素数 洛谷linklinklink 分析: 直 ...
- 第4章 同余问题《信息学奥赛一本通 提高篇》
一.同余问题 常用的数论算法(C++描述) 常用的数论算法(C++描述)_linyq@BambooFan ~-CSDN博客_c++数论 数论中的一些基础算法 数论中的一些基础算法_Every day- ...
- 【图形学数学基础】第一章
数学基础(一) 笛卡尔坐标系 弧度和角度的换算 三角函数恒等式 对称相关 毕达哥拉斯定理 毕达哥拉斯恒等式 和差恒等式 等腰三角形恒等式(a=b= θ \theta θ) 正弦定理 余弦定理 计算机图 ...
- 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第三章 同余(Part I)
索引 同余基础 一.同余定义 Th3.1.1:∀a,b∈Z,a,b\forall a,b\in \mathbb{Z},\text{ }a,b∀a,b∈Z, a,b对模mmm同余⇔\Leftrighta ...
- 初等数论 课堂笔记 第三章 --同余及其一些有趣的应用
索引 同余性质 定理: ∀a,b∈Z\forall a,b\in \mathbb{Z}∀a,b∈Z,有a≡b(modm)⇔m∣(a−b)⇔∃t∈Z,a=b+mta\equiv b\left( \bmo ...
最新文章
- php客户反馈发邮箱,PHP实现通过get方式识别用户发送邮件的方法
- python lock_python lock一步步教你理解Python装饰器
- 数据结构选择题(c语言)
- rest api如何创建_REST:创建资源
- 《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念
- java 分裂数字_分裂的补充:超越数字,打印物理可视化
- 001_docker-compose构建elk环境
- java切换jdk版本_切换JDK版本quick
- 基于JAVA+SpringMVC+Mybatis+MYSQL的会议室预约管理系统
- 使用 LwIP TCP/IP 栈,在 STM32Cube 上开发应用
- c语言设计 教师信息管理系统 含源码及说明
- 腾讯云window阿帕奇服务器开通ssl证书实现https访问
- 深度学习之反向传播推导
- 【转载】树莓派 Raspberry Pi Pico windows7 串口驱动
- python和jsp哪个好学_Python,Java和JavaScript,学哪个编程语言好就业?
- 计算机的键盘组合件,电脑组合键盘快捷键大全
- SG3525频率和占空比参数的选取
- 解决win10右击鼠标卡顿问题
- 【ICPR 2021】遥感图中的密集小目标检测:Tiny Object Detection in Aerial Images
- 【Excel】常用的excel表格操作
热门文章
- switch语句+java1.8_Java switch语句
- 大数据应用统一集成平台CDAP简介
- 算法基础课【合集2】
- java cron 每100分钟执行一次
- python中str.center()的功能是什么_Python str内部功能介绍
- cnpm安装 指定版本_vue npm install安装某个指定版本的方法
- JAVA读文件类之FileReader/InputStreamReader/BufferedReader
- 游戏美术设计怎么入门?场景建模该如何学习?
- 我的元旦是这么过来的
- mysql.js回调函数_js回调函数(callback)