总得来说,这是可怕的一天,极其可怕的一天(完)

一、数论

阴影啊!

首先,设ab为两个整数,则存在唯一的q和r,使得a=qb+r

若r=0,则b整除a,记作b|a。

(1)同余

若a/m和b/m的余数相同,则称a于b对模m同余,记作a ≡ b (mod m)

剩余系:在模 m 的意义下,余数相同的数归为一个集合,那么所有整数被分为 m个不同的集合,模 m 的余数分别为 0,1,2,3,...,m − 1,这些集合被称为模 m 剩余类(同余类)。每个同余类中的任意两个整数都是模 m 同余的。__by dzy(就是模m的余数集合)

若是剩余系遍历了0~m-1,则叫做完全剩余系

  • 同余式的三则运算:
  • 设 a,b,c,d 为整数,m 为正整数,若 a ≡ b (mod m),c ≡ d(mod m),则:

  • ax + cy ≡ bx + dy (mod m),其中 x,y 为任意整数,即同余式可以相加()
  • ac ≡ bd (mod m),即同余式可以相乘a n ≡ b n (mod m),其中 n > 0
  • f(a) ≡ f(b) (mod m),其中 f(x) 为任一多项式。
  • a n ≡ b n (mod m),其中 n > 0

(2)素数

判断素数的方法:一般是从2开始,枚举到√ n,依次判断i是否能整除n,若n=pq,则pq中的一个必定小于等于√ n。

但是,如果硬生生跑√ n,那么如果需要素数的话可能会把评测姬卡哭喔

所以我们需要:

素数筛

原理1:考虑在每找到一个素数的时候把它的倍数也标记上。这样就可以实现:大大减少

复杂度:O(nloglogn)基本达到线性。

但是它还有优化的空间:

比如12,跑到2的时候它被筛了一次,跑到3的时候它又被干了一次

所以极端情况评测姬还是会被卡哭....

我们强制命令每一个数都只被它的最小质因数给筛去,

于是,伟大的线性筛出生了

原理2:每一个数都只被它的最小质因数给筛去

下for解释:

如果大于上界,退出,

标记非质数

如果i被之前的素数筛过了(这里保证了线性,即每个数只来一遍)

三、欧拉函数(φ(n))是指不超过n且与n互质的数的个

  • p是一个质数,则φ(p)=p-1(除了1都与p互质)(逆定理依旧成立)
  • p是质数,a是正整数,则(显然只有p的倍数与p^a 不互质,故可得到上式)
  • 如果mn互质,则φ(mn)=φ(m)*φ(n)必须互质!!(证明长啊。。。甩个链接https://cdn.luogu.org/upload/pic/69862.png)

欧拉定理:如果a,m互质,那么:

此证明不难理解:

*x1 * x2 * x3.....xφ(m)≡x1 * x2 * x3.....xφ(mod m)

同除

x1x2x3......

常用的是:费马小定理

当 p 是质数,a ̸= p 时,有 a p−1 ≡ 1 (mod p)。。

广义欧拉定理:

证明是真的不会....放链接https://blog.csdn.net/zxyoi_dreamer/article/details/82929466

四、gcd部分

lcm(最小公倍数)(a,b)=ab/gcd(a,b);

求算gcd:欧几里得算法(辗转相除)

原理:gcd(a,b)=gcd(b,a-b)

设 (a,b) = g,a = cg,b = dg,那么 (c,d) = 1。
(b,a − b) = (d,c − d)g。
如果 (d,c − d) = q ̸= 1,那么 (c,d) ≥ q ̸= 1,矛盾。
所以 (b,a − b) = (d,c − d)g = g。

所以gcd就诞生了

int gcd(int a,int b)
{
if(b==)return a;
else gcd(b,a%b);
}(短小精悍)

exgcd(一次不定方程)

考虑求解方程:ax+by=c

有解的情况是:gcd(a,b)|c。

当b=0,gcd(a,b)=a;

当b!=0,gcd(a,b)=gcd(b,a%b);

所以原方程——>bx2+(a%b)y2=gcd(b,a%b)

于是我们就可以递归求解。

五、逆元

在一些情况下,(比如组合数)要边除边膜,这样可能暴毙。。。

所以逆元登场了。除一个数等于乘一个数的倒数,所以逆元就是除数膜的倒数

来看看正经的定义:

若(a,m)=1,且ab≡ 1 (mod m),则b就是a%m意义下的逆元。

(a/b≡ a ∗ c (mod m))

求解逆元的方法:

1、费马小定理

根据定义,ab≡ 1 (mod m),及费马小定理,得:

所以a^(p-2)*a≡1(mod p)所以得a^p-2是a的逆元

2、exgcd

已知exgcd可用于求解ax+by=1的解,那么exgcd怎么求算逆元呢?

如果ax+by=1,则ax≡1(mod m)所以x就是a在模m意义下的逆元。

3、线性递推

https://www.cnblogs.com/qdscwyy/p/7795368.html

六、多元一次不定方程

1、二元一次不定方程

exgcd.....系数同除以c,然后解再乘上c就行了

2、多元方程组

n元一次不定方程:

当且仅当(a1; a2; :::; an)|c,方程有解。

怎么解呢?

设(a1; a2) = d2; (d2; a3) = d3; :::; (dn-1; an) = dn,那么方程等价于:

于是可以从最后一个开始求,然后代回去,直到第一个。

3、一元线性同于方程:

形如ax≡b (mod m)

等价于ax-my=b,直接exgcd即可。

形如

的可爱方程组~(彻底败给了dzy大神的讲解顺序啊....先exCRT再CRT.....真的醉了)

(1)CRT解法 限制:m1,m2,互质,若m不互质,甚至可以质因数分解强行互质.....

令ei=1/Mi*Mi mod m

则:

所以,

(2)exCRT(合并法)

考虑两两合并:

由于x≡b(mod m)等价于x-my=b,

当:

根据上述展开,得

所以,我们令m=lcm(m1,m2),此方程就变成了:

最后得到一个方程,那么这个解就是最终解

七、神仙

实在是看不懂,老师也没有讲,果然还是我太弱了

day3(数论)的更多相关文章

  1. Day3:T1数论+高精 T2搜索

    T1:数论+高精(水~) 根据题意可知,从除的数越大越好(在0~9中) 所以我们只要用到高精除然后再模拟一下就可以了 //MARK:但是要注意0-9这个特殊值需要特判,因为题目要求输出的数至少是两位数 ...

  2. 【CCPC-Wannafly Winter Camp Day3 (Div1) F】小清新数论(莫比乌斯反演+杜教筛)

    点此看题面 大致题意: 让你求出\(\sum_{i=1}^n\sum_{j=1}^n\mu(gcd(i,j))\). 莫比乌斯反演 这种题目,一看就是莫比乌斯反演啊!(连莫比乌斯函数都有) 关于莫比乌 ...

  3. 简单数论 | Day3 部分题解

    A - The Euler function 来源:HDU 2824 计算[a,b]区间内的整数的欧拉函数值,需要掌握单个欧拉函数和函数表的使用. #include <iostream> ...

  4. qbxt Day3 on 2019-8-18

    qbxt Day3 on 2019-8-18 一.基础数论 1.进制转换 进制转换是一个非常简单且基础的问题. 也许我们只需要...Emmm... 列个式子就好了鸭 设\(k\)进制数每一位上是\(a ...

  5. Codeforces Round #382 Div. 2【数论】

    C. Tennis Championship(递推,斐波那契) 题意:n个人比赛,淘汰制,要求进行比赛双方的胜场数之差小于等于1.问冠军最多能打多少场比赛.题解:因为n太大,感觉是个构造.写写小数据, ...

  6. NOIP2014 uoj20解方程 数论(同余)

    又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...

  7. 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)

    ~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...

  8. hdu 1299 Diophantus of Alexandria (数论)

    Diophantus of Alexandria Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  9. 【BZOJ-4522】密钥破解 数论 + 模拟 ( Pollard_Rho分解 + Exgcd求逆元 + 快速幂 + 快速乘)

    4522: [Cqoi2016]密钥破解 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 290  Solved: 148[Submit][Status ...

随机推荐

  1. 【TencentOS tiny】深度源码分析(4)——消息队列

    消息队列 在前一篇文章中[TencentOS tiny学习]源码分析(3)--队列 我们描述了TencentOS tiny的队列实现,同时也点出了TencentOS tiny的队列是依赖于消息队列的, ...

  2. 运维自动化神器ansible之user模块

    运维自动化神器ansible之user模块 一.概述   user模块 可管理远程主机上的 用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 二.参数介绍   name: 用于指定操作 ...

  3. git的下载及简单使用一

    git 是世界上最先进的分布式版本控制系统 常用的git网站 GitHub gitee(码云) git的下载地址 https://git-scm.com/downloads 而后根据计算机的系统选择相 ...

  4. 最简单的ArcGIS Engine应用程序(终)

    在上文的基础上,下面将使用简单的代码实现要素类属性的查看.(最简单的ArcGIS Engine应用程序(下)) 新增一个窗体,并从工具箱拖动DataGridView控件到该窗体中.设置该对象的Dock ...

  5. drf框架接口文档

    drf框架接口文档 REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 一.安装依赖 pip insta ...

  6. CentOS 7.6 Telnet服务搭建(Openssh升级之战 第一任务备用运输线搭建)

    (以下内容亲手完成,如果需要搬走记得把写博的小白的名字和邮箱一起搬走) 出来玩(学习),总是要还的! 有不明的问题的时候,都来博客园转转,总能找到答案或者灵感,开博3个月都没发一篇帖(不晓得管理员有何 ...

  7. SpringBoot项目配置Tomcat和JVM参数

    设置Tomcat端口号和连接数等 使用application.properties配置文件有一些参数无法设置,所以推荐创建一个类文件来配置,如下: package com.qipai.springbe ...

  8. 14.Linux压缩/打包

    今天来讲解一下压缩和打包的相关命令,首先得先明确两个概念,即:压缩和打包 压缩:将文件或目录进行压强,使文件或目录大小变小 打包:表示将目录中的所有内容,捆绑在一起,方便传输,打包后的文件会变大,不一 ...

  9. openflow流表项中有关ip掩码的匹配的问题(控制器为ryu)

    一.写在前面 唉,被分配到sdn安全方向,顶不住,顶不住,感觉搞不出来什么有搞头的东西.可若是让我水水的应付,我想我也是做不到的,世上无难事只怕有心人.好了,进入正题,本次要讨论的时一个比较细节的东西 ...

  10. 使用Redis在Hibernate中进行缓存

    Hibernate是Java编程语言的开放源代码,对象/关系映射框架.Hibernate的目标是帮助开发人员摆脱许多繁琐的手动数据处理任务.Hibernate能够在Java类和数据库表之间以及Java ...