![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 76
WedsonLin
这个作者很懒,什么都没留下…
展开
-
Codeforces Educational Codeforces Round 106 /D. The Number of Pairs
Codeforces Educational Codeforces Round 106 /D. The Number of PairsD. The Number of Pairs题意:对于1≤c,d,x≤1e71\le c,d,x\le1e71≤c,d,x≤1e7,找出满足c⋅lcm(a,b)−d⋅gcd(a,b)=xc\cdot lcm(a,b)-d\cdot\gcd{(a,b)}=xc⋅lcm(a,b)−d⋅gcd(a,b)=x的(a,b)(a,b)(a,b)的对数。设g=gcd(a,b)g=原创 2021-03-21 15:33:57 · 145 阅读 · 0 评论 -
Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)/D
Codeforces Round #707 (Div. 2, based on Moscow Open Olympiad in Informatics)/DD.Two chandeliers题意:给出两个无限循环序列A,B以及整数k,找出最小长度x满足对于1≤i≤x1\le i\le x1≤i≤x,恰好有k对ai≠bia_i\ne b_iai=bi。A序列的循环节长度为n,B序列为m。对于序列A,B,找出循环节中所有的ai≠bia_i\ne b_iai=bi的时间复杂度是O(nm)O原创 2021-03-15 17:31:23 · 267 阅读 · 0 评论 -
Codeforces Round #705 (Div. 2)/D. GCD of an Array
Codeforces Round #705 (Div. 2)D. GCD of an Array题意:给出一个长度为n的数组,每次对其中一个元素进行乘法操作,然后询问整个数组的GCD。首先肯定想到的是,对数组的元素进行质因数分解,然后每次更新只用更新单个元素的质因数表达式。同时维护所有元素共有质因数的最小次幂,以便求GCD。之后需要考虑的式用什么数据结构来维护每个元素的质因数表达式和所有元素共有质因数的最小次幂。1、对于维护每个元素的质因数表达式。如果用vector则不便于修改,方法之一是可以使用原创 2021-03-07 21:40:21 · 226 阅读 · 0 评论 -
UVA 11426
UVA 11426(欧拉函数)求∑i=2N−1∑j=i+1Ngcd(i,j)\sum_{i=2}^{N-1}\sum_{j=i+1}^Ngcd(i,j)i=2∑N−1j=i+1∑Ngcd(i,j)一开始想过用莫比乌斯反演做…然而做不出来。解:∑i=1N−1∑j=i+1Ngcd(i,j)=∑i=2N∑j=1i−1gcd(i,j)\sum_{i=1}^{N-1}\sum_{j=i+1}^Ngcd(i,j)=\sum_{i=2}^N\sum_{j=1}^{i-1}gcd(i,j)i=1∑N−1j=i原创 2021-03-05 20:41:05 · 155 阅读 · 0 评论 -
LightOJ 1336
LightOJ 1336题目:求1-n中σ(x)\sigma(x)σ(x)为偶数的个数,其中σ\sigmaσ为约数和函数。对任意正整数n有,n=p1a1p2a2p3a3...pnann=p_1^{a_1}p_2^{a_2}p_3^{a_3}...p_n^{a_n}n=p1a1p2a2p3a3...pnanσ(n)=(1+p1+p12+...+p1a1)(1+p2+p22+...+p2a2)...(1+pn+pn2+...+pnan)\sigma(n)=(1+p_1+p_1^2+...+原创 2021-03-02 15:45:02 · 131 阅读 · 0 评论 -
斐波那契数列以及Catalan数通项公式的推导
1、斐波那契数列的通项公式推导:已知斐波那契数列的递推公式为f(n)=f(n−1)+f(n−2)f(n)=f(n-1)+f(n-2)f(n)=f(n−1)+f(n−2)且f(0)=0,f(1)=1f(0)=0,f(1)=1f(0)=0,f(1)=1。设斐波那契数列的生成函数为F(x)F(x)F(x),F(x)=∑i=0nf(i)xiF(x)=\sum_{i=0}^nf(i)x^iF(x)=∑i=0nf(i)xi。...原创 2021-02-22 16:47:45 · 1436 阅读 · 1 评论 -
已知x=a mod p,y=b mod p,求gcd(x,y) mod p的最大值
已知x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod px≡a(modp),y≡b(modp)求d≡gcd(a,b)(modp)d\equiv gcd(a,b)\pmod pd≡gcd(a,b)(modp)最大值。p为素数已知x≡a(modp),y≡b(modp)x\equiv a\pmod p,y\equiv b\pmod px≡a(modp),y≡b(modp)求d≡gcd(a,b)(modp)d\equiv gcd(a,b)\pmod pd≡gcd原创 2021-02-15 14:22:57 · 198 阅读 · 0 评论 -
TJOI 2017 (Pollard_rho,MR素数测试)
TJOI 2017 (Pollard_rho,MR素数测试)题目链接题意是求分数BA\frac{B}{A}AB在模M下的逆元,没有则输出-1。本题的两大核心是:Pollard_rho算法,和MR素数测试算法。BA\frac{B}{A}AB在模M下有逆元当且仅当gcd(A,M)=1gcd(A,M)=1gcd(A,M)=1,因为分数不是最简的,所以只要分数可以化简到B′A′\frac{B'}{A'}A′B′,其中gcd(A′,M)=1gcd(A',M)=1gcd(A′,M)=1即有逆元。我一开始原创 2020-12-13 17:18:00 · 149 阅读 · 0 评论 -
Timus 1673(反欧拉函数)
Timus 1673(反欧拉函数)题目链接有题意可知,设第i个教授掌管的实验室编号为index,则满足index≡i(modN)index\equiv i\pmod Nindex≡i(modN);对于第k个同学,只去编号为index′=kx(k≥1)index'=kx(k\ge 1)index′=kx(k≥1)的实验室。如果第k个同学要获得考试资格,则满足如下同余方程组{kx1≡1(modN)kx2≡2(modN)...kxN≡N(modN)\left\{\begin{matrix} kx_1\eq原创 2020-12-08 16:44:32 · 442 阅读 · 0 评论 -
Codeforces Round #290 (Div. 2) D
Codeforces Round #290 (Div. 2) D题目要求满足如下约束条件的元组(l1,l2,l3,…,li)(l_1,l_2,l_3,\dots,l_i)(l1,l2,l3,…,li):l1x1+l2x2+l3x3+⋯+lixi=1l_1x_1+l_2x_2+l_3x_3+\dots+l_ix_i=1l1x1+l2x2+l3x3+⋯+lixi=1使得函数F=∑i=1nciF=\sum_{i=1}^{n}c_iF=∑i=1nci最小化。说人话就是找到若干个数原创 2020-12-05 16:01:47 · 154 阅读 · 0 评论 -
SDOI 2016 排列计数
SDOI 2016 排列计数题目链接设满足题目条件且长度为n恰好有m个数稳定的序列数为ans(n,m)ans(n,m)ans(n,m)那么易得题目答案ANS可表示为:ANS=ans(n,m)=C(n,m)∗ans(n−m,0)ANS=ans(n,m)=C(n,m)*ans(n-m,0)ANS=ans(n,m)=C(n,m)∗ans(n−m,0)因为题目规定n,m≤1e6n,m\le1e6n,m≤1e6,所以C(n,m)可以通过预处理阶乘+乘法逆元快速求得。至于ans(n-m,0),又被称作为全错原创 2020-12-04 11:32:43 · 151 阅读 · 0 评论 -
NOI 2018 屠龙勇士(exCRT)
NOI 2018 屠龙勇士(exCRT)题目链接根据题目。对于每一条龙,设其血量为a,回血量为p。选择武器的攻击力为ATK,攻击的最少次数为x。可以得到同余方程:ATK⋅x≡a(modp)ATK\cdot x\equiv a\pmod pATK⋅x≡a(modp)这个方程也等价于ATKgcd(ATK,p)⋅x≡agcd(ATK,p)(modpgcd(ATK,p))\frac{ATK}{gcd(ATK,p)}\cdot x\equiv \frac{a}{gcd(ATK,p)}\pmod {\fra原创 2020-11-28 21:20:43 · 219 阅读 · 0 评论 -
扩展中国剩余定理(EXCRT)
扩展中国剩余定理(EXCRT)中国剩余定理可以解形如下面的一元线性同余方程组:{ans≡x1(moda1)ans≡x2(moda2)ans≡x3(moda3)...ans≡xn(modan) \left\{\begin{matrix}ans\equiv x_1\pmod{a_1} \\ans\equiv x_2\pmod{a_2} \\ ans\equiv x_3\pmod{a_3}\\.\\.\\.\\ans\equiv x_n\pmod{a_n}\end{matrix}\right.原创 2020-11-27 14:58:49 · 253 阅读 · 0 评论 -
二次剩余与Cipolla算法
二次剩余与Cipolla算法若存在x,使得x2≡a(modp)x^2\equiv a \pmod{p}x2≡a(modp)成立且a不是p的倍数,则称a为模p的二次剩余。下文只讨论p为奇素数的情况。1、模p二次剩余的个数对于一个素数p,p的二次剩余有(p-1)/2个,非二次剩余有(p-1)/2个。因为有(p−x)2≡x2(modp)(p-x)^2\equiv x^2 \pmod{p}(p−x)2≡x2(modp),所以在[1,(p-1)/2]范围内即可得到模p的所有二次剩余数,只需要证明在[1,原创 2020-11-24 23:33:28 · 595 阅读 · 0 评论 -
关于BSGS算法
关于BSGS算法文章中提到的p,如果不加说明则默认为素数。BSGS算法适用于在求解形如ax≡b(modp)a^x\equiv b \pmod pax≡b(modp)的不等式。可知0≤x<p0\le x<p0≤x<p,那么可以令x=A⌈p⌉−B,0<=A,B<=⌈p⌉x=A\lceil\sqrt{p}\rceil-B,0<=A,B<=\lceil\sqrt{p}\rceilx=A⌈p⌉−B,0<=A,B<=⌈p⌉所以原问题转换成aA⌈p⌉−B原创 2020-11-14 18:27:09 · 267 阅读 · 0 评论 -
Miller-Rabin随机性素数测试方法
关于素数测试素数测试就是判断一个整数是素数还是合数。一般判断素数p的方式是通过判断2到根号p内的整数是否可以整除p来实现。时间复杂度为O(p1/2)。如果p是一个m位二进制整数,m=floor(Ig(p+1)),O(p1/2)=O(2m/2)。然而对于大整数而言,这样的时间复杂度显然是不可以接受的。费马小定理:if n is prime ∀a∈Zn∗ , an−1≡1(modn)if\space n\space is\原创 2020-10-24 17:06:53 · 427 阅读 · 1 评论 -
Candy UVA 1639 (数学期望)
Candy UVA 1639 (数学期望)有两个盒子各有n颗糖(n<=2*105),从两个盒子取糖的概率为p和1-p,直到一个盒子没糖,求另一个盒子中糖的个数的数学期望。期望公式为:E=∑i=1ni∗E(i)=∑j=0n(n−j)∗Cn+jj[pn+1∗(1−p)j+(1−p)∗pj]E=\sum_{i=1}^{n}i*E(i)=\sum_{j=0}^{n}(n-j)*C_{n+j}^{j}[p^{n+1}*(1-p)^{j}+(1-p)*p^{j}]E=i=1∑ni∗E(i)=j=0∑n(原创 2020-10-18 15:04:06 · 142 阅读 · 0 评论 -
关于组合数取模
关于组合数取模对于C(n,m) mod p (m<=n)1、如果n,m比较,1<=m<=n<=1000,p<=1e9可以用杨辉三角递推式去解决,用C[n][m]来储存C(n,m)的值,则递推式为:C[i][j] mod p=(C[i-1][j-1]+C[i-1][j]) mod p(1<=j<=i) C[i][0]=12、如果n,m较大,p较小(1<=m<=n<=1e18,p<=1e5 and p is prime)可以用Luca原创 2020-10-17 11:40:43 · 203 阅读 · 1 评论 -
UVA 1637 NEERC 2005 (全概率公式)
UVA 1637 NEERC 2005 (全概率公式)首先熟悉概率公式的定义:P(A)=P(A|B1)*P(B1)+P(A|B2)*P(B2)+P(A|B3)*P(B3)+…+P(A|Bn)*P(Bn),其中B1∪B2∪…∪Bn构成事件空间的全集。这道题的意思是,有36张牌,分成9叠,每叠4张,每次可以任从两叠的顶端取两张相同的牌,直到取完即为成功,如果当前情况有有种选择,每种选择的概率的相等的,求成功的概率。我们可以用一个九元组<a1,a2,…,a9>表示当前的状态,其中ai表示第i叠原创 2020-10-11 15:07:16 · 135 阅读 · 0 评论 -
关于概率的一些事(对于贝叶斯公式的一些初级理解)
关于概率的一些事条件概率公式:P(A|B)=P(AB)/P(B)- - -111当A,B事件相互独立时,有P(AB)=P(A)*P(B)P(B|A)=P(AB)/P(A)- - -222联立111,222式,可得P(A|B)=P(A)*P(B|A)/P(B)- - -333333式也叫贝叶斯公式。其中P(A)也叫先验概率(Prior probability),即在不知道B事件发生前,对A事件的一个主观评估的概率;P(A|B)也叫后验概率(Posterior probability),即在发原创 2020-09-29 21:07:21 · 291 阅读 · 0 评论 -
UVA 10820 Send a Table (欧拉函数)
UVA 10820 Send a Table (欧拉函数)输入n,对于整数x,y(1<=x,y<=n),f(x,y)=f(kx,ky),k式正整数。所以可以用过f(x,y)的性质对函数表进行化简。问在[1,n]内最简的整数表有多少个元素。问题的实质是求在[1,n]内有多少对互素的整数,因为如果x,y不互质,那必然存在因子k,满足f(x’,y’)=f(kx’,ky’)。对于欧拉函数F,F(x)的值就表示小于n且与n互素的数的个数。欧拉函数F的表达式可以由相容排斥原理得到,且可以化为下面的原创 2020-09-27 21:10:16 · 128 阅读 · 1 评论 -
UVA 1635 Irrelevant Elements (唯一分解定理+组合数的递推公式)
UVA 1635 Irrelevant Elements (唯一分解定理+组合数的递推公式)给出n个数a1,a2,…,an,相邻两个数两两相加直到合并成一个数A,问A/m的结果与a1,a2,…,an哪些数无关。显然题目要找的是对于A=c1a1+c2a2,…,cnan,有哪些ai前面的系数是可以被m整除的。且可以发现对于ai前面的系数ci=C(n-1,i-1),因为当n较大时,组合数会很大以至于long long都存不下,所以可以根据组合数的递推公式,得到组合数的素因子分解式,来判断当前系数是否可以被m原创 2020-09-27 11:04:22 · 143 阅读 · 0 评论 -
UVA 12716 GCD XOR(数论)
UVA 12716 GCD XOR(数论)给出n(1<=n<=3e7), 在[1,n]内有多少对整数对,满足gcd(a,b)=a XOR b异或的性质:有 a xor b =c, 则 a xor c =b可以证得,对于a>=b 有 a-b<=a xor b又因为c是a,b得约数,所以有 c<=a-b得 c<=a-b<=a xor b若 a xor b = c ,则必有a-b=c通过枚举c,通过与素数筛类似的方法得到以c为约数的合数a,再得到b =a原创 2020-09-26 13:59:08 · 153 阅读 · 0 评论 -
UVA 12169 Disgruntled Judge (扩展欧几里得算法)
UVA 12169 Disgruntled Judge (扩展欧几里得算法)给出3个整数x1,a,b。根据递推公式xi=(a*xi-1+b) mod 10001来构造了长度为2T的数列。给出x1,x3,x5…x2T-1,求出x2,x4,x6…x2T.根据题意,有:x2=(ax1+b)%mod - - - 111x3=(ax2+b)%mod - - - 222令n=mod由111得x2和ax1+b同余,所以x2-(ax1+b)=ny1 - - -333由222得x3和ax2+b同余,所以x3-(原创 2020-09-23 14:30:32 · 132 阅读 · 0 评论 -
UVA 11582 Colossal Fibonacci Numbers(数论)
UVA 11582 Colossal Fibonacci Numbers(数论)给定a,b(0<=a,b<264)和正整数n(1<=n<=1000),求f(ab)modn,其中f(x)是斐波那契数列。根据斐波那契数列的定义和模运算的性质可知:有f(n) mod n=f(n-1) mod n+f(n-2) mod n,不妨令F(n)=f(n) mod n当<F(n-1),F(n)>二元组第二次出现时,前面的项构成了F(x)数列的最短循环节。之后只用求F(abmod原创 2020-09-22 16:48:17 · 101 阅读 · 0 评论