首页 > 其他分享 >note 信竞中的数学

note 信竞中的数学

时间:2023-10-09 15:12:24浏览次数:35  
标签:frac gcd 质数 times note 数学 竞中 equiv mod

1.质数和约数

质数:

若一个正整数无法被除了 \(1\) 和它本身之外的任何自然数整除,则称该数为质数。

质数的判定:

  1. 试除法

  2. Miller-Robbin

Eratosthenes筛法

每个合数 \(a\) 一定可以写成 \(p\times x\) 的形式,其中 \(p\) 是素数,\(x\) 是倍数 \((x\neq 1)\)。

对于每个 \(1\) 到 \(n\) 内的素数 \(p\),枚举倍数 \(x\) 把 \(p\times x\) 标记为合数,这就是埃氏筛法。

筛选时做一个改进:对于素数 \(p\),只筛倍数 \(x\ge p\) 的数,因为如果 \(x<p\) ,则 \(x\) 中一定有比 \(p\) 小的素因子,\(p\times x\) 会在前面筛选过程中被筛出。

因此只需考虑 \(2\) 到 \(n\) 范围的素数。

时间复杂度:\(O(nloglogn)\)

p[0]=p[1]=true;
for(int i=2;i<=n;i++){
	if(p[i])
        continue;
	for(int j=i;i*j<=n;++j)
        p[i*j]=true;
}

线性筛法

在 Eratosthenes 筛法中,合数会被重复标记。

如果每个合数只被它的最小质因数标记,那么每个数最多只会被标记一次。

依次考虑 \(2\) 到 \(n\) 之间的每一个数 \(i\)。

如果 \(i\) 是质数,则将其保存到质数表中。

否则利用 \(i\) 和质数表中的 \(pri[j]\) 筛去 \(i\times pri[j]\)。

筛的过程中要确保 \(pri[j]\) 是 \(i\times pri[j]\) 的最小质因子。

p[0]=p[1]=true;
for(int i=2;i<=n;i++){
	if(!p[i]) 
    	pri[++cnt]=i;
	for(int j=1;j<=cnt&&i*pri[j]<=n;j++){
	    p[i*pri[j]]=true; 
        if(!i%pri[j])
            break;
	} 
}

算术基本定理

若整数 \(n \ge 2\),那么 \(n\) 一定可以唯一地表示为若干质数的乘积。形如

\[n = P_1^{c_1}P_2^{c_2} … P_k^{c_k} \]

(\(P_i\) 为质数,\(c_i\ge 0\))

约数

若整数 \(n\) 除以整数 \(d\) 的余数为 \(0\),即 \(d\) 能整除 \(n\)。

则称 \(d\) 是 \(n\) 的约数,\(n\) 是 \(d\) 的倍数。记为 \(d|n\)。

若正整数 \(n\) 被唯一分解为 \(n=P_1c_1P_2c_2⋯P_mc_m\),其中 \(c_i\) 都是正整数,\(P_i\) 都是质数。

且满足$ P_1<P_i<...<P_m$,则 \(n\) 的正约数集合为 :

\[P_1^{c_1}P_2^{c_2}…P_k^{c_k} |0 \le b_i \le c_i \]

\(n\) 的正约数个数为 :

\[(c_1+1)\times (c_2+1)\times⋯(c_m+1)=\prod_{i=1}^m(c_i+1) \]

n 的所有正约数的和为:

\[(1 + p_1 + p_1^2+...+p_1^{c_1})\times...\times(1 + p_m+p_m^2 + p_m^{c_m}) = \prod_{i = 1}^m(\sum_{j = 0}^{c_1}(p_i)^j) \]

求正约数集合

求 \(n\) 的正约数集合:试除法

一个整数 \(n\) 的约数个数上界为 \(2\sqrt{n}\)。

求 \(1\) 到 \(n\) 每个数的正约数集合:倍数法

\(1\) 到 \(n\) 每个数的约数个数的总和大约为 \(nlogn\)。

反素数

对于任何正整数 \(x\),其约数个数记作 \(g(x)\)。例如:\(g(1)=1\),\(g(6)=4\)。

如果某个正整数满足:

对于任意的 \(0<i<x\),都有 \(g(x)>g(i)\),那么称 \(x\) 为反素数。

求不超过 \(N\) 的最大的反素数。

\(1\le N\le 2\times 10^9\)

\(1\) 到 \(N\) 中最大的反素数,就是 \(1\) 到 \(N\) 中约数个数最多的数中最小的一个。

\(1\) 到 \(N\) 中任何数的不同质因子都不会超过 \(10\) 个,且所有质因子的指数总和不超过 \(30\)。

\(\forall x \in [1,n]\),\(x\) 为反素数的必要条件是:\(x\) 分解质因数后可写作

\[2^{c_1}\times 3^{c_2}\times 5^{c_3}\times 7^{c_4} \times 11^{c_5} \times 13^{c_6} \times 17^{c_7} \times 19^{c_8} \times 23^{c_9}\times 29^{c_{10}} \]

并且

\[c_1 \ge c_2 \ge...\ge c_{10}\ge 0 \]

综上,DFS 即可。

余数之和

给出正整数 \(n\) 和 \(k\),请计算:

\[G(n,k)=\sum_{i=1}^nk\mod i \]

\[G(n,k)=\sum_{i=1}^nk\mod i=n*k-\sum^n_i=\lfloor\frac{k}{i}\rfloor \times i \]

最大公约数和最小公倍数

令 \(a\) 和 \(b\) 是不全为 \(0\) 的两个整数。

能使 \(d|a\) 和 \(d|b\) 的最大整数称为 \(a\) 和 \(b\) 的最大公约数,用 \(gcd(a,b)\) 表示。

或者记为 \((a,b)\)。

能使 \(a|d\) 和 \(b|d\) 的最小整数称为 \(a\) 和 \(b\) 的最小公倍数,用 \(lcm(a,b)\) 表示。

或者记为 \([a,b]\)。

求解最大公约数

更相减损术:

\[\forall a,b\in \mathbb{N},b\neq0 \]

\[gcd(a,b)=gcd(b,a−b)=gcd(a,a−b) \]

\[\forall a,b\in \mathbb{N} \]

\[gcd(2a,2b)=2gcd(a,b) \]

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

\[\forall a,b\in \mathbb{N},b\neq0,gcd(a,b)=gcd(a,a\mod b) \]

最小公倍数

\[lcm(a,b)= \frac{ab}{gcd(a,b)} \]

若 \(a|m\) 且 \(b|m\),则 \(lcm\ a,b|m\)

若 \(m,a, b\) 是正整数,则 \(lcm (ma,mb)=m\times lcm(a,b)\)

\[lcm(a_1, a_2) = a_1a_2/gcd(a_1,a_2) \]

\[lcm(a_1,a_2,a_3)=lcm(lcm(a_1,a_2),a_3) \]

互质与欧拉函数

\(\forall a,b\in \mathbb{n}\),若 \(gcd(a,b)=1\),则称 \(a,b\) 互质。

\(1\) 到 \(N\) 中与 \(N\) 互质的数的个数被称为欧拉函数,记为 \(\varphi(N)\)。

若 \(N=p_1^{c_1}p_2^{c_2}...p_m^{c_m}\),则:

\[\varphi(N)=N \times\frac{p_1 - 1}{p_1}\times\frac{p_2 - 1}{p_2}\times...\times\frac{p_m - 1}{p_m} = N \times \prod_{p|N}(1 - \frac{1}{p}) \]

  1. \(\forall n>1\),\(1\) 到 \(n\) 中与 \(n\) 互质的数的和为 \(n\times \varphi (n)/2\)。

  2. 若 \(a\),\(b\) 互质,则 \(\varphi ab=\varphi\ a\ \varphi (b)\)

积性函数:\(a\),\(b\) 互质时,有 \(f(ab)=f(a)\times f(b)\),那么称函数 \(f\) 为积性函数。

  1. 若 \(f\) 是积性函数,且在算术基本定理中 \(n=\varsigma i=1m\ p_i\ c_i\) 则 \(f n=\varsigma i=1m\ f(p_i\ c_i)\)。

  2. 设 \(p\) 为质数,若 \(p|n\) 且 \(p\ 2\ |n\) 则 \(\varphi n=\varphi(\frac{n}{p})\times p\)。

  3. 设 \(p\) 为质数,若 \(p|n\) 且 \(p\ 2 \nmid n\) 则 \(\varphi n=\varphi(\frac{n}{p})\times (p-1)\)

  4. \(\sum \limits_{d|n}\varphi(d)=n\)

线性筛求欧拉函数

for(int i=2;i<=n;i++){
	if(!p[i]){
      	pri[++cnt]=i;
      	phi[i]=i-1;
    }
	for(int j=1;j<=cnt&&i*pri[j]<=n;j++){
		p[i*pri[j]]=true; 
		if(!i%pri[j]) {
            phi[i*pri[j]]=phi[i]*pri[j]; 
            break;
        }
		else
          	phi[i*pri[j]]=phi[i]*(pri[j]-1);
	} 
}

2.同余

模运算

\((a+b)\mod m=((a\mod m)+(b\mod m))\mod m\)

\((a-b)\mod m=((a\mod m)-(b\mod m))\mod m\)

\((a\times b)\mod m=((a\mod m)\times(b\mod m))\mod m\)

基本概念

除法定理:对于任何整数 \(a\) 和任何正整数 \(b\),存在唯一整数 \(q\) 和 \(r\),满足 \(0 \le r < m\) 且 \(a = qm+r\),其中 \(q=\lfloor\frac{a}{m}\rfloor\) 为商,\(r=a\mod m\) 为余数。

同余:如果 \(a \mod m=b \mod m\),即 \(a\), \(b\) 除以 \(m\) 所得的余数相等,记作:\(a\equiv b(\mod m)\)。

裴蜀定理

对任何整数 \(a\),\(b\),关于未知数 \(x\) 和 \(y\) 的线性不定方程(称为裴蜀等式):\(ax+b\)

方程有整数解(当且仅当 \(c\) 是 \(gcd(a,b)\) 的倍数)。

裴蜀等式有解时必然有无穷多个解。
\(ax+by=c\) 有解的充要条件为 \(gcd(a,b)|c\)。

一定存在 \(x\),\(y\) 满足 \(ax+by=gcd(a,b)\)。

\(a,b\) 互质等价于 \(ax+by=1\) 有解。

扩展欧几里德算法

void exgcd(int a,int b,int &x,int &y){
	if(!b){
        x=1,y=0; 
        return;
    }
	exgcd(b,a%b,y,x);
	y-=a/b*x;
}

逆元求解

\(ax \equiv 1(\mod m)\)

利用扩展欧几里得算法求逆元,相当于解方程:\(ax+my=1\)。

利用欧拉定理求逆元,有 \(a\times a^{\varphi(m)−1}\equiv 1(\mod m)\) ,可用快速幂求解。

当 \(m\) 为质数时,答案为 \(qpow(a,m-2)\mod m\)。

线性求逆元:递推

求 \(1\) 到 \(n\) 所有数模 \(p\)(\(p\) 为质数且 \(n<p\))意义下的逆元。

当求 \(i\) 的逆元时,考虑 \(p=iq+r\),有:\(iq+r \equiv 0(\mod p)\)。

由于 \(p\) 是质数,所以 \(r\) 不为 \(0\),\(r\) 的逆元存在。

等式两边同乘 \(i^{-1}r^{-1}\),得到 \(qr^{-1} + i^{-1}\equiv 0(\mod p)\)。

因此:\(i^{−1}\equiv −qr^{−1} \equiv −p_i(p \mod i)^{-1} (\mod p)\)。

for(int i=2;i<=n;i++) 
  	inv[i]=inv[p%i]*(p-p/i)%p;

线性同余方程

形如 \(ax\equiv c(\mod m)\) 的方程为线性同余方程。

线性指 \(x\) 的系数为一次。

该方程可转化为 \(ax+my=c\) 后利用扩展欧几里得算法求解。

根据裴蜀定理,方程有解当且仅当 \(gcd(a,m)|c\)。

线性同余方程组

考虑形如 \(x\equiv a_i (\mod m_i)\) 的若干方程联立得到的方程组,如:

今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?

\[|x\equiv 2(mod 3)......(1) \]

\[|x\equiv 3(mod 5)......(2) \]

\[|x\equiv 2(mod 7)......(3) \]

中国剩余定理

对于同余方程组 \(x\equiv a_i(\mod m_i) (i=1...n)\),若 \(m_i\) 两两互质,则 \(x\) 在 \(\mod M\) 下有唯一解。

其中 \(M=m_1m_2...mn\)。

令 \(M_i=Mm_i\) 有 \((M_i,m_i)=1\),\(M_i\) 关于模 \(m_i\) 的逆元存在,设逆元为 \(t_i\)。

\[M_i\ t_i\equiv1(\mod m_i), M_i\ t_i\equiv0(\mod m_j) (j\neq i) \]

\[a_i\ M_i\ t_i\equiv a_i(\mod m_i), a_i\ M_i\ t_i\equiv 0 (\mod m_j)(j\neq i) \]

故解为

\[x\equiv\sum_{i=1}^{n}a_i\ M_i\ t_i(\mod M)。 \]

\[a_i={2,3,2},m_i={3,5,7},M=3\times 5\times 7=105 \]

\[M_i={\frac{105}{3},\frac{105}{5},\frac{105}{7}}={35,21,15} \]

\[t_i={inverse(35, 3),inverse(21, 5),inverse(15, 7)}={2,1,1} \]

\[x\equiv2\times(35\times2)+3\times(21\times1)+2\times(15\times1) \]

\[x\equiv 233\equiv 23(\mod 105) \]

通解

\[x=23+105k(k\in z) \]

for(int i=1;i<=n;i++)
  	M*=a[i];
for(int i=1;i<=n;i++){
	m[i]=M/a[i];
	exgcd(m[i],a[i],t[i],y);
	ans+=b[i]*m[i]%M*t[i]%M;
	ans%=M;
}

3.组合计数

加法原理和乘法原理

加法原理:

完成一件事的方法有 \(n\) 类,第 \(i\) 类包括 \(a_i\) 种不同的方法,且这些方法互不重合。

则完成这件事共有 \(a_1+a_2+...+a_n\) 种不同的方法。

乘法原理:

完成一件事需要 \(n\) 个步骤,第 \(i\) 个步骤有 \(a_i\) 种不同的完成方法,且这些步骤互不干扰。

则完成这件事共有 \(a_1\times a_2\times ...\times a_n\) 种不同的方法。

排列数和组合数

从 \(n\) 个不同元素中依次取出 \(m\) 个元素排成一列,产生的不同排列的数量为:

\[A_n^m=\frac{n!}{(n-m)!}=n\times(n−1)\times...\times (n−m+1) \]

从 \(n\) 个不同元素中取出 \(m\) 个组成一个集合(不考虑顺序),产生的不同集合数量为:

\(C_n^m = \frac{n!}{(n - m)!}=\frac{n \times(n - 1) \times...\times(n - m + 1)}{m \times(m - 1)\times......\times}2\times1\)

组合数的性质

\(C_n^m=C_n^{n−m}\)

\(C_n^m=C_{n−1}^m+C_{n-1}^{m−1}\)

\(C_n^0+C_n^1 +C_n^2+...+C_n^n= 2^n\)

二项式定理

\[(a+b)^n=\sum_{k=0}^nC_n^ka^kb^{n-k} \]

4.附录

\(|\) 整除

\(a|b\) 意思为 \(b\) 能整除 \(a\)

"\(\nmid\)"

\(a \nmid b\)意思为 \(b\) 不能整除 \(a\)

\(\equiv\) 同余

$\in\ \ni\ \notin $他的头朝哪边另一边就是这边的因数,斜杠则代表不是。

\(\forall\)任意

标签:frac,gcd,质数,times,note,数学,竞中,equiv,mod
From: https://www.cnblogs.com/xiaoluotongxue2012/p/17751782.html

相关文章

  • MySQL之分组函数学习
    分组函数:用作统计使用,又称为聚合函数或统计函数 分类:sum求和、avg平均值、max最大值、min最小值、count计算个数 特点:sum、avg一般用于处理数值型max、min、count可以处理任何类型 可以和distinct搭配实现去重的运算selectsum(distinctsalary),sum(sala......
  • notes-at-the-autumnal-equinox
    秋分小记Created:2023-09-26T09:17+08:00Published:2023-10-08T19:41+08:00Categories:FragmentTags:Diary目录秋天的树如果你冷SayGoodbye如此爱你姊妹日记一则(有删改)你们能做得比StableDiffusion更好吗?月亮的歌催婚?野鸭和喜鹊积雨云后知后觉秋天的树很感动还有那......
  • Python入门示例系列09 Python数学运算
     Python中的各种进制一、二进制,八进制,十进制,十六进制的表示方法在python的IDLE中输入的不同进制的数值,直接转化为十进制>>>0b10#以0b开头表示的是二进制(b-Binary)/ˈbaɪnəri/2>>>0o10#以0o开头表示的是八进制(o-字母欧Octal)/ˈɒktl/8>>>0x10#......
  • [总结] 高等数学的一些理解
    ......
  • 外汇110网:擅长数学能做好外汇交易吗?
    许多人认为,要想成为一名成功的交易者,必须是某种数学天才。事实是,虽然一些数学技能很重要,但高级数学知识并不是成功的必要条件。交易者使用各种各样的技能来获得成功,包括批判性分析和风险管理。虽然数学技能有助于分析数据和做出决策,并且复利等数学概念也很重要,但交易者还可以使用......
  • 密码协议学习笔记(1.4):密码学的一些数学基础
    数学基础:抽象代数:一个算符的代数结构:幺半群:数的集合和一个算符构成的代数结构$(G,+)$,且满足封闭性结合律存在恒等元(在群中我习惯这么叫,避免混淆)群:满足如下条件的代数结构$(G,+)$:封闭性结合律存在恒等元对于每个元素均存在逆元交换群/阿贝尔群:满足如......
  • 组合数学学习/复习笔记
    模板(前置芝士)P1226【模板】快速幂|取余运算目的:顾名思义,快速求解乘方。实现:挺好写的。题目传送门代码P3811【模板】乘法逆元开longlong!!定义:若\(a*x\equiv1\pmodb\),且\(a\)与\(b\)互质,那么就能定义\(x\)是\(a\)在模\(p\)意义下的逆元,记为\(a^{......
  • 应知应会数学常识 | 人教版新教材
    前言以前在高三教学中曾经梳理积累过常用也常见的数学常识,现在教授新教材,依托人教版新教材再次梳理和积累。必修系列+选择性必修系列;必修系列1\(\S1.\)集合与常用逻辑用语①自创概念:为便于教学,引入以下自创数学概念:✍️形如\(\{x\mid2\leqslantx\leqslant5\}\)的集合......
  • jupyter notebook修改out处的字体样式和大小
    修改输入处的字体大家应该在网上可以找到不少。但是out处的字体也很小很难看清楚,本问就是帮助大家修改out处的字体样式和大小。首先找到anaconda所在文件夹,在该文件夹下找到custom.css文件,该文件所在的目录如下:例如F:\Anaconda\Lib\site-packages\nbclassic\static\custom(备注......
  • note 糖水不等式
    什么是糖水不等式?\[\frac{a}{b}\lt\frac{a+m}{b+m}\\\(m>0)\]凭直觉这个不等式当然是成立的,但数学这么严谨的东西你直觉算个姬直觉是不可靠的,那我们证明一下:我们用改变后的浓度减去初始浓度:\[\frac{a+m}{b+m}-\frac{a}{b}=\frac{a(b+m)-b(a+m)}{a(a+m)}=\frac{(ab+am)-(a......