「「「数学基础」」」第333章 同余问题
目录:

A.同余方程
B.约数之和
C.线性求逆元
D.中国剩余定理

A.A.A. 例题111 同余方程


洛谷linklinklink

分析:

拓展欧几里得(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×ki​​pij​)
然后等比数列求和 ∏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 线性求逆元


洛谷linklinklink

分析:

逆元线性递推公式 模板

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 中国剩余定理



洛谷linklinklink

分析:

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章 快速幂

    信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂 https://blog.csdn.net/mrcrack/article/details/82846727 快速幂取模算法如何实现? h ...

  2. YBT 6 数学基础

    $补+写题ing$ 第 1 章 快速幂 序列的第 k 个数 link $solution:$ 板子 A 的 B 次方 link $solution:$ 板子 [NOIP2013] 转圈游戏 link ...

  3. 补充---信息安全数学基础第四章习题答案

    补充-信息安全数学基础第四章习题答案 (补充了网上能找到的一些答案) 前三章的答案以后发吧~~~ 图片:

  4. 高职计算机基础教案ppt,计算机数学基础 高职计算机大类专业基础 郭宝玉 PPT计算机数学基础 第2章.ppt...

    计算机数学基础 高职计算机大类专业基础 郭宝玉 PPT计算机数学基础 第2章.ppt (53页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 ...

  5. 【Ybt OJ】[数学基础 第2章] 质数与约数

    「「「数学基础」」」第222章 质数和约数 目录: A.线性筛素数 B.质数距离 C.不定方程 D.反素数 E.余数之和 A.A.A. 例题111 线性筛素数 洛谷linklinklink 分析: 直 ...

  6. 第4章 同余问题《信息学奥赛一本通 提高篇》

    一.同余问题 常用的数论算法(C++描述) 常用的数论算法(C++描述)_linyq@BambooFan ~-CSDN博客_c++数论 数论中的一些基础算法 数论中的一些基础算法_Every day- ...

  7. 【图形学数学基础】第一章

    数学基础(一) 笛卡尔坐标系 弧度和角度的换算 三角函数恒等式 对称相关 毕达哥拉斯定理 毕达哥拉斯恒等式 和差恒等式 等腰三角形恒等式(a=b= θ \theta θ) 正弦定理 余弦定理 计算机图 ...

  8. 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第三章 同余(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 ...

  9. 初等数论 课堂笔记 第三章 --同余及其一些有趣的应用

    索引 同余性质 定理: ∀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 ...

最新文章

  1. php客户反馈发邮箱,PHP实现通过get方式识别用户发送邮件的方法
  2. python lock_python lock一步步教你理解Python装饰器
  3. 数据结构选择题(c语言)
  4. rest api如何创建_REST:创建资源
  5. 《UNIXLinux程序设计教程》一2.1 UNIX 输入输出基本概念
  6. java 分裂数字_分裂的补充:超越数字,打印物理可视化
  7. 001_docker-compose构建elk环境
  8. java切换jdk版本_切换JDK版本quick
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的会议室预约管理系统
  10. 使用 LwIP TCP/IP 栈,在 STM32Cube 上开发应用
  11. c语言设计 教师信息管理系统 含源码及说明
  12. 腾讯云window阿帕奇服务器开通ssl证书实现https访问
  13. 深度学习之反向传播推导
  14. 【转载】树莓派 Raspberry Pi Pico windows7 串口驱动
  15. python和jsp哪个好学_Python,Java和JavaScript,学哪个编程语言好就业?
  16. 计算机的键盘组合件,电脑组合键盘快捷键大全
  17. SG3525频率和占空比参数的选取
  18. 解决win10右击鼠标卡顿问题
  19. 【ICPR 2021】遥感图中的密集小目标检测:Tiny Object Detection in Aerial Images
  20. 【Excel】常用的excel表格操作

热门文章

  1. switch语句+java1.8_Java switch语句
  2. 大数据应用统一集成平台CDAP简介
  3. 算法基础课【合集2】
  4. java cron 每100分钟执行一次
  5. python中str.center()的功能是什么_Python str内部功能介绍
  6. cnpm安装 指定版本_vue npm install安装某个指定版本的方法
  7. JAVA读文件类之FileReader/InputStreamReader/BufferedReader
  8. 游戏美术设计怎么入门?场景建模该如何学习?
  9. 我的元旦是这么过来的
  10. mysql.js回调函数_js回调函数(callback)