2017.10.29闵神讲课DAY2(数论)

2023-10-10 02:59

本文主要是介绍2017.10.29闵神讲课DAY2(数论),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

模运算

等大家刷题刷的多了,就会发现一些题会要求你对最终答案对P取模(当然也会有一些**的题目会让你高精度,不谈了)


除法定理

对于一个整数x和正整数p,x能被唯一地表示为x=a*p+b,其中a是整数,b是小于p的非负数.
这个小学学过吧,a是x除以p的商,b是余数。
x对p取模的结果自然是b,如果有另一个数y=c*p+d,首先y模p的结果就是d,那么这两个数如果做一些运算答案对p取模的结果是什么呢?
下面推一些公式,不是很难。


加减乘…..

继续沿用刚才x和y的定义:

x±y=(a±b)p+(c±d),设c±d=e*p+f,那么
x±y=(a±b+e)p+f,所以(x±y)%p=(c±d)%p
x*y=(a*c)*p^2+(b*c+a*d)*p+(c*d),设c*d=e*p+f
那么xy=(a*c*p+b*c+a*d+e)*p+f,(xy)%p=(cd)%p
这个说明了什么呢?不管x和y本身是多少,他们运算后模p的结果就是他们模p后运算的结果再模p,求解时只需要保留过程中的数模p的结果就行


定义运算

有了这个性质我们就可以把程序中所有需要操作的数都限定到[0,p-1]范围内辣。
思考:如果数刚开始不是这个范围内咋办?
下面是闵神的模板,注意细节和常数的处理。

板子嘿嘿嘿

也就是举个例子
如果题目要你%2333(这是一个质数)

那么在这个题目中2334等价于1
4666等价于0
就是2334=1,,4666=0在此题是正确的
这样我们就可以避免很多大数据的计算


乘法逆元

在此我们需要引进两个新的概念:
单位元:单位元(英文常写作Identity Element,即IE)是集合里的一种特别的元,与该集合里的运算(可理解为实数里的*,但并不局限于)有关。当它和其他元素结合时,并不会改变那些元素。(说的通俗一点,加法的单位元就是0,;乘法的单位元就是1)
逆元:逆元素是指一个可以取消另一给定元素运算的元素,在数学里,逆元素广义化了加法中的加法逆元和乘法中的倒数。

对于除法来说,同余原理是不满足的(即(a/b)%p!=(a%p)/(b%p))

那么我们该怎么处理除法呢??

这时候我们就要用到逆元了!
将除法转化为乘这个数的逆元

定义:对于正整数a和m,如果a*x mod m=1, 则x的最小正整数解称为a模m的逆元,表示为a^(-1) (mod m)

求解方法:(1)根据费马小定理:有a^(m-1) mod m=1, 即a*a^(m-2) mod m=1, 所以a^(m-2)就是a模m的逆元。 (适用条件:m为素数)

     (2)扩展欧几里得求解:a*x mod m=1,即a*x-m*y=1,解这个丢番图方程即可。 (适用条件:gcd(a,m)=1)

     (3)欧拉函数法:留个坑。

     (4)线性递推:规定m为质数,且1^(-1)≡1(mod m) 设 m=ka+b(b<a,1<a<m) , 即 k∗a+b≡0(mod m)

             两边同时乘以a^(−1)∗b^(−1),得到:
             kb(

这篇关于2017.10.29闵神讲课DAY2(数论)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177460

相关文章

JDK9到JDK21中值得掌握的29个实用特性分享

《JDK9到JDK21中值得掌握的29个实用特性分享》Java的演进节奏从JDK9开始显著加快,每半年一个新版本的发布节奏为Java带来了大量的新特性,本文整理了29个JDK9到JDK21中值得掌握的... 目录JDK 9 模块化与API增强1. 集合工厂方法:一行代码创建不可变集合2. 私有接口方法:接口

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

数论ZOJ 2562

题意:给定一个数N,求小于等于N的所有数当中,约数最多的一个数,如果存在多个这样的数,输出其中最大的一个。 分析:反素数定义:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数。 性质一:一个反素数的质因子必然是从2开始连续的质数。 性质二:p=2^t1*3^t2*5^t3*7

POJ2247数论

p = 2^a*3^b*5^c*7^d 求形如上式的第n小的数。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.u

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数

Java预备知识 - day2

1.IDEA的简单使用与介绍 1.1 IDEA的项目工程介绍 Day2_0904:项目名称 E:\0_code\Day2_0904:表示当前项目所在路径 .idea:idea软件自动生成的文件夹,最好不要动 src:src==sourse→源,我们的源代码就放在这个文件夹之内 Day2_0904.iml:也是自动生成的文件,不要动 External Libraries:外部库 我这

2014年暑假培训 - 数论

A银河上的星星 /**************************************************************     Problem: 1014     User: DoubleQ     Language: C++     Result: Accepted     Time:190 ms     Memor

ZOJ1007(数论)

题目链接:点击打开链接 解题思路:   纯粹的数学题,没有输入,直接要求输出.直接给出的求和式子极限到无穷,无法直接计算.Hint里给出了提示,大意就是说求g(x) - g(1)的求和极限,最后再加上g(1)就能求出g(x).   由g(x)  - g(1) 能够得出 1 / k*(k+x) - 1 / k * (k + 1) = (1 - x) / k * ( k + 1) * (k

基于Python的机器学习系列(29):前馈神经网络

在本篇文章中,我们将学习如何使用PyTorch构建和训练一个前馈神经网络。我们将以线性回归为例,逐步了解PyTorch的各个组件及其在神经网络中的应用。这些步骤包括: 指定输入和目标:我们将定义输入特征和目标变量。数据集和数据加载器:使用PyTorch的数据集和数据加载器来管理和加载数据。nn.Linear(全连接层):创建前馈神经网络中的线性层。定义损失函数:选择合适的损失函数