实用算法实现-第 27 篇 中国余数定理

逆元的定义,性质,求解方法与例题 文章目录一、定义二、作用及证明作用.计算除法的模 (a/b) mod n证明:三、求解方法1.扩展欧几里得算法2.欧拉定理与费马小定理(快速幂求法)3.线性递推(逆元打表)四、性质(映射关系)1.性质2.证明五、例题·瞬间移动1.分析2.代码 一、定义 若整数a、b满足同余方程a∗b≡1(mod n) ,那么a,b互为模n意义下的逆元 逆元存在的充要条件为gcd(a,b)为1. 二、作用及证明 作用.计算除法的模 (a/b) mod n 除法不可以使用之前分部的策略,否则结果将会产生问题。 证明: . 阅读详情

27.1    中国余数定理

定理:对任意n > 1,如果gcd(a, n) = 1,则方程a • x ≡ 1(mod n)对模n有唯一解,否则方程无解。若方程有解,x可以表示为(a^-1) mod n,x可以由欧几里德算法的扩广形式求出。

设n1, n2, ..., nk两两互质,n = n1• n2 • ... • nk

定义:mi = n1• n2 • ... • ni-1 • ni+1 • ... • nk

定义:ci = mi • (mi^-1 mod ni)

定义:a ≡ (a1•c1 + a2• c2 + ...+ak•ck) (mod n)

可以证明:a ≡ ai (mod ni)

证明如下:

ci = mi • (mi^-1 mod ni) 故此ci ≡ 1 (mod ni)

又由mi ≡ 0 (mod nj)                             j= 1, 2, ..., i-1, i+1, ...k

故此 mi • (mi^-1 mod ni) ≡ 0 (mod nj)        j =1, 2, ..., i-1, i+1, ...k

故此ci ≡ 0 (mod nj)                              j = 1, 2, ...,i-1, i+1, ...k

由  ci ≡ 0 (mod nj)                               j = 1, 2, ..., i-1, i+1, ...k

ci ≡ 1 (mod nj)                               j = i

       可知ci和(0, 0, ..., 0, 1, 0, ..., 0)有一一对应的关系。

故此a ≡ ai • ci                               (mod ni)

≡ ai • mi(mi^-1 mod ni)              (mod ni)

≡ ai                                     (mod ni)

       由上面证明可知:对于两两互质的n1, n2, ..., nk,若已知a1, a2, ..., ak,则可以求出a (mod n),使得ai = a (mod ni)。即a和(a1, a2, ..., ak)一一对应。

由中国余数定理有:

推论:如果n1, n2, ..., nk两两互质,n=n1 • n2 • ... • nk,则对所有整数x和a(i = 1, 2, ..., k), 有x = a(mod ni),当且仅当x = a(mod n)。

27.1.1   实例

PKU JudgeOnline, 1006, Biorhythms.

27.1.2   问题描述

一个人体力、情绪、智力的波动周期为23,28,33天,给定每种状态达到最高点分别为第p, e, i天,从第d天开始,过多少天后会达到三者的最高点。

27.1.3   输入

00 0 0

00 0 100

520 34 325

45 6 7

283102 23 320

203301 203 40

-1 -1 -1 -1

27.1.4   输出

Case1: the next triple peak occurs in 21252 days.

Case2: the next triple peak occurs in 21152 days.

Case3: the next triple peak occurs in 19575 days.

Case4: the next triple peak occurs in 16994 days.

Case5: the next triple peak occurs in 8910 days.

Case6: the next triple peak occurs in 10789 days.

27.1.5   分析

这里23,28,33互质,所以可以用中国剩余定理的这个推论。

先求出mi,再根据欧几里德算法的扩广形式求出((mi^-1) mod ni),再求出ci。将ci作为常数存起来,然后根据公式求出a就可以了。

27.1.6   程序

#include<stdio.h>
int main()
{    intp,e,i,d,a,t=0;
     while(1)
     {
         scanf("%d%d%d%d",&p,&e,&i,&d);
         if(p==-1&& e==-1 && i==-1 && d==-1)
              break;
         a=(5544*p+14421*e+1288*i-d+21252)%21252;
         if(!a)
              a=21252;
         printf("Case%d: the next triple peak occurs in %d days.\n",++t,a);
     }
     return 0;
}

27.2    实例

PKU JudgeOnline, 1006, Biorhythms.

本文章欢迎转载,请保留原始博客链接http://blog.youkuaiyun.com/fsdev/article

告别混乱代码!在Arduino IDE中管理多文件项目的5个必备技巧 本文分享了在Arduino IDE中管理多文件项目的5个必备技巧,帮助开发者告别混乱代码。通过代码分割和模块化设计,提升编译效率、降低内存占用,并实现功能解耦。重点介绍了头文件设计、CPP文件实现、调试技巧和工业级目录结构,让你的Arduino项目像乐高积木一样清晰易维护。 阅读详情

相关推荐

WSL基础环境配置方案

通过以上步骤,您已经在 Windows 的 WSL 环境中成功搭建了一个完整的基础开发环境,包含 Docker、Kubernetes、Helm、kubectl、yq、Git 等工具。这套环境特别适用于在国内使用阿里云镜像服务部署和管理 Tekton,提升了开发和运维的效率和稳定性。

落魄书生的职业学习生涯 8876

欧拉定理:若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)。

欧拉定理:若 gcd(a,n)=1,则 a^φ(n)≡1(mod n)。

hnjzsyjyj的专栏 570

ANSYS MAXWELL内置式永磁同步电机(IPMSM)转矩最大时输入电流相位的确定

1.在转子转速为零时看一个周期内的转矩变化

qq_41752507的博客 6517

中国余数定理(Chinese Remainder Theorem)

中国余数定理也叫孙子定理记录在《孙子算经》中:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?” 关于孙子算经这道题的解法宋朝数学家秦九韶于1247年《数书九章》卷一、二《大衍类》对“物不知数”问题做出了完整系统的解答。明朝数学家程大位将解法编成易于上口的《孙子歌诀》: 三人同行七十稀,五树梅花廿一支,七子团圆正半月,除百零五使得知。 即:先找到5与7公倍数中余3为1的数=70,3与7公倍数中余5为1的数=21,3与5公倍数中余7为1的数

crayfish104的博客 1230

TP4054芯片实战:手把手教你设计USB锂电充电电路(附PCB散热优化技巧)

本文以TP4054芯片为核心,手把手教你设计稳定可靠的USB锂电池充电电路。文章详细解析了芯片的恒流恒压工作模式、关键外围元件选型计算,并重点分享了PCB布局与散热优化的实战技巧,帮助工程师从“能工作”提升到“工作得好”,确保充电效率与系统稳定性。

1a2s3d4f5g的博客 468

DANN实战:用Python手把手教你实现对抗迁移学习(附完整代码)

本文通过Python实战教程,手把手教你实现DANN对抗迁移学习模型,以解决领域偏移问题。文章详细解析了领域对抗神经网络的核心机制,包括梯度反转层和领域判别器的构建,并提供了从数据准备、模型搭建到训练评估的完整代码,帮助开发者快速掌握这一强大的无监督领域自适应技术。

net55的博客 317

数据结构和算法 数论 中国余数定理

​找出所有整数,它们被3、5、7除时,余数分别为2,3和2。一个这样的解为,所有的解是形如(k为任意整数)的整数。“中国余数定理”提出,对一组两两互质的模数(如3、5、7)来说,其取模运算的方程组与对其积(如105)取模运算的方程之间存在着一种对应关系。 中国余数定理被广泛用于计算大整数,因为它允许用几个类似的小整数计算来替换一个知道结果大小界限的计算。

学以致用 知行合一 2154

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 3231

中国余数定理

&lt;!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt; 1 void extended_gcd(int a,int b,int *x,int *y) 2 { 3     int t; 4     if(b==0) 5     { 6   ...

weixin_34405925的博客 120

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

weixin_45011386的博客 3825

sentaurus学习笔记(HFET_pGate_GaN仿真)(五)

`(sdedr:define-constant-profile`和`(sdedr:define-constant-profile-region`命令用于定义并应用一个恒定的活性硼掺杂浓度剖面`"ndop_GaN_gate_const"`到氮化镓栅极层上,其值为`NpGaN_gate`。- `"Oxide"`指定了这一层的材料名称(在这里代表氧化层),而`"nucleation"`是这一层在仿真中的标识名称。- `"GaN"`指定了这一层的材料名称,而`"GaN_gate"`是这一层在仿真中的标识名称。

qq_52640792的博客 940

【codevs3990】中国余数定理2

【题目描述】Skytree神犇最近在研究中国博大精深的数学。这时,Sci蒟蒻前来拜访,于是Skytree给Sci蒟蒻出了一道数学题:给定n个质数,以及k模这些质数的余数。问:在闭区间[a,b]中,有多少个k?最小的k是多少?Sci蒟蒻数学能力差了Skytree三条街,所以他只好寻求计算机的帮助。他发邮件给同为oier的你,你能帮他解决这个问题吗? 【题解】 用中国剩余定理求出最...

anzhi7214的博客 154

看不懂分子动力学模拟的结果?一文读懂RMSD曲线

随后,将每一帧结构与初始模板进行叠合,计算对应原子的平均偏移量,即RMSD。总之,掌握 RMSD 的解读方法,就等于抓住了评估分子动力学模拟成败与质量的“总开关”。①在模拟初始阶段,RMSD会从0迅速上升,这是蛋白质从静态晶体或模型结构释放到溶液环境中并逐渐适应的正常过程。②经过一段时间后,曲线不再系统性上升或下降,而是围绕一个平均值,小幅度地上下波动,形成一个稳定的“平台”。这种情况下,RMSD 在初始快速上升后,并未进入平台,而是持续甚至加速上升,始终未见收敛。🔍 如何解读不同趋势的RMSD曲线。

weixin_46587777的博客 4891

HDU1930 And Now, a Remainder from Our Sponsor

And Now, a Remainder from Our Sponsor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 479 Accepted Submission(s): 195 Problem Description

eeeaaaaa的专栏 602

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

CODE[VS] 3040 中国余数定理 1

题目描述Description 摘自算法导论。。。。。。 找出第k个被3,5,7除的时候,余数为2,3,2的数; 输入描述Input Description 一个数k。 输出描述Output Description 求出第k个符合条件的数。 样例输入Sample Input 1 样例...

weixin_30613433的博客 135

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

java加密算法非对称加密算法——数字信封 DH

类似数字签名,数字信封是这样描述的:  数字信封          数字信封用加密技术来保证只有特定的收信人才能阅读信的内容。  流程:      信息发送方采用对称密钥来加密信息,然后再用接收方的公钥来加密此对称密钥(这部分称为数字信封),再将它和信息一起发送给接收方;接收方先用相应的私钥打开数字信封,得到对称密钥,然后使用对称密钥再解开信息。     接下来我们分析DH加密算

wjq008的专栏 5443

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RSA应用现状及应用于文件加密的分析

Research And Development Of RSA File Encryption 摘 要 分析RSA算法的应用现状,论证文件加密应用RSA算法的可行性和意义。设计一套完整实用的RSA文件加密解决方案,具体编码实现。对RSA算法进行研究,从常规RSA算法出发,用C++实现RSA加密算法类库,并在32位windows平台封装成组件。在.Net平台引用此组件,实现可以对任意文件进行RSA加密操作的窗体应用程序。经过加密的文件以及密钥文件都是文本文件。给出关键类类图、整个应用程序的结构描述文档、关键

ambiguous__的博客 1553

d h算法 java_DH Diffie-Hellman算法(D-H算法),密钥一致协议。

1 package com.ice.webos.util.security;23 import java.security.Key;4 import java.security.KeyFactory;5 import java.security.KeyPair;6 import java.security.KeyPairGenerator;7 import java.security.Public...

weixin_31539351的博客 561

各种Java加密算法-非对称加密

RSA 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥 匙,公钥与私...

Franco的博客 9825

DH Diffie-Hellman算法(D-H算法),密钥一致协议。

1 package com.ice.webos.util.security; 2 3 import java.security.Key; 4 import java.security.KeyFactory; 5 import java.security.KeyPair; 6 import java.security.KeyPairGenerator; 7 import jav...

weixin_34187862的博客 216

03《算法导论(第三版)·Thomas H. Cormen等》读书笔记

目录第1章 算法在计算中的作用1.1 算法1.2 作为一种技术的算法第2章 算法基础2.1 插入排序2.2 分析算法2.3 设计算法2.3.1 分治法2.3.2 分析分治法第3章 函数的增长3.1 渐近符号3.2 标准记号与常用函数第4章 分治算法4.1 最大子数组问题4.2 矩阵乘法的Strassen算法4.3 用代入法求解递归式4.4 用递归树方法求解递归式4.5 用主方法求解递归式4.6 证...

董绘峰的博客 5486

费马小定理的归纳法证明和应用

费马小定理的归纳法证明和应用

weixin_62599885的博客 4233

【雷达】调频连续波雷达多运动目标检测(Matlab代码实现)

FMCW雷达多运动目标检测技术已在高精度测距测速、动态环境适应性和多目标分离等方面取得显著进展,但仍需在算法效率、复杂场景鲁棒性和硬件优化上进一步突破。随着深度学习与新型信号处理技术的结合,未来有望在自动驾驶、智能安防等领域实现更广泛的应用。📚2 运行结果clear all;close all;x=cube;endL=1./L;end🎉3参考文献。

qq_46009436的博客 770
上一篇: 实用算法实现-第 26 篇 模运算
下一篇: 实用算法实践-第 28 篇 素数判别
存储李希
博客等级 码龄15年 418粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值