![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论/数学 知识点
文章平均质量分 75
JK Chen
ACM退役选手,战绩4金6银
展开
-
任意模数NTT
任意模数NTT模板:#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 1<<18;const double Pi=acos(-1);int n, m, p, l, k;struct cp{ double a, b; void operator +...原创 2019-10-07 18:18:25 · 201 阅读 · 0 评论 -
模板:圆和多边形交
#include <bits/stdc++.h>using namespace std;const double eps = 1e-8;const int inf = 1e20;const int maxp = 1005;const double pi = acos(-1.0);int sgn(double x){ if(fabs(x) < eps) ret...原创 2019-07-17 20:42:55 · 349 阅读 · 0 评论 -
Fansblog(威尔逊定理 大数阶乘取模)
原题: http://acm.hdu.edu.cn/contests/contest_list.php题意:给出一个质数PPP,找出小于PPP的最大的质数NNN,求出NNN的阶乘模PPP。(P∈[1e10,1e14]P\in[1e10,1e14]P∈[1e10,1e14])解析:有两个定理:当PPP为质数的时候,(P−2)!=1(P-2)!=1(P−2)!=1任意两个质数的差不会超过...原创 2019-07-29 18:05:44 · 2519 阅读 · 0 评论 -
2019 Multi-University Training Contest 1 —— Sequence(NTT 高维前缀和)
原题: http://acm.hdu.edu.cn/showproblem.php?pid=6589题意:给出n个数的数组,有三种操作:1:bi=∑j=1iajb_i=\sum_{j=1}^ia_jbi=∑j=1iaj2:bi=∑j=1iaj[2∣i−j]b_i=\sum_{j=1}^ia_j[2|i-j]bi=∑j=1iaj[2∣i−j]2:bi=∑j=1iaj[3∣i−...原创 2019-07-23 19:45:03 · 206 阅读 · 0 评论 -
2200+专项:C. Curious Array(高阶差分序列)
原题: http://codeforces.com/problemset/problem/407/C题意:给出一个数组,每次操作[L,R][L,R][L,R],使区间加上Ckk,Ck+1k,Ck+2k...Ck+R−LkC_k^k,C_{k+1}^k,C_{k+2}^k...C_{k+R-L}^kCkk,Ck+1k,Ck+2k...Ck+R−Lk,问最终的数组。解析:就是高阶差分序...原创 2019-07-15 10:39:13 · 275 阅读 · 0 评论 -
A Path Plan(LGV定理 多条路径不相交方案数)
原题: http://acm.hdu.edu.cn/showproblem.php?pid=6482题意:两个人在y轴上,他们的家在x轴上,问两个人到家的路径没有重复点的方案数(只能往右下走)。LGV定理:设e(ai,bj)e(a_i,b_j)e(ai,bj)为点aia_iai到达bjb_jbj的方案数,那么所有ai→bia_i\to b_iai→bi且路径不相交的方案数为下面...原创 2019-05-13 21:33:36 · 681 阅读 · 1 评论 -
K次圆覆盖
原题: https://vjudge.net/problem/SPOJ-CIRUT题意: 给出n个圆,问共被i个圆覆盖的面积模板题#include<bits/stdc++.h>using namespace std;const int maxn=1009;const double eps=1e-8;const double pi=acos(-1);int dcmp(do...原创 2019-04-29 11:09:20 · 404 阅读 · 0 评论 -
I. Rise of the Robots(几何 最小圆覆盖)
原题: http://codeforces.com/gym/102006/problem/I题意:现在有一个桌子,半径为R。有一个机器人,半径为r,需要进行以下n次移动:x=x+xi,y=y+yix=x+xi,y=y+yix=x+xi,y=y+yi,当机器人有一部分在桌子外就不行了。求机器人的起始点。解析:相当于求一个圆,将机器人的移动到的所有点都覆盖。这个有一个O(N)的算法,叫最小圆覆...原创 2019-04-14 09:53:56 · 356 阅读 · 0 评论 -
快速傅里叶变换 FFT
在数字信号处理中常常需要用到离散傅立叶变换(DFT),以获取信号的频域特征。尽管传统的DFT算法能够获取信号频域特征,但是算法计算量大,耗时长,不利于计算机实时对信号进行处理。因此至DFT被发现以来,在很长的一段时间内都不能被应用到实际的工程项目中,直到一种快速的离散傅立叶计算方法——FFT,被发现,离散傅立叶变换才在实际的工程中得到广泛应用。需要强调的是,FFT并不是一种新的频域特征获取方...原创 2018-09-25 14:05:34 · 1012 阅读 · 0 评论 -
二项式定理
二项式定理公式:(x+y)n=∑i=0nCnixiyn−i(x+y)^n=\sum_{i=0}^nC_n^ix^iy^{n-i}(x+y)n=∑i=0nCnixiyn−i这个知识点其实很简单的,你自己展开得出来的就是这个东西,下面两个推广也很简单当你把(1,1)带入时,会得到:∑i=0nCni=2n\sum_{i=0}^nC_n^i=2^ni=0∑nCni=2n当你把(1,-1)...原创 2018-09-18 16:28:21 · 4712 阅读 · 0 评论 -
二项式反演
反演:设求解函数为G,当G直接求比较复杂时,可以用与G相关的函数F来转化,且一般F都比较好求,大多时候为一个未知量已知的且可以O(1)求出的公式比如,G(d)=∑i=1n∑j=1m[gcd(i,j)==d]G(d)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d]G(d)=∑i=1n∑j=1m[gcd(i,j)==d],就可以用莫比乌斯反演快速推出:F(d)=∑d...原创 2018-09-18 13:57:06 · 1789 阅读 · 0 评论 -
HDU - 5955 Guessing the Dice Roll(AC自动机 高斯消元解dp方程)
#include<stdio.h>#include<string.h>#include<queue>#include<string>#include<iostream>#define maxlen 100005using namespace std;int n,len;int nxt[maxlen][7],FAIL[max...原创 2019-07-24 19:29:42 · 308 阅读 · 0 评论 -
阶、原根、指标(离散对数)
阶定义: 最小的ttt使得:at≡1(mod  p)a^t\equiv1(mod \;p)at≡1(modp),则称ttt为aaa在模ppp下的阶((a,p)=1(a,p)=1(a,p)=1),记作:δp(a)=t\delta_p(a)=tδp(a)=t理解: a%pa\%pa%p下的阶ttt相当于a%pa\%pa%p的循环节,每乘上ata^tat,值不变。拓展...原创 2019-08-14 22:30:11 · 1354 阅读 · 0 评论 -
线性规划(单纯型法)
问题模型有nnn个变量x1,x2,...,xnx_1,x_2,...,x_nx1,x2,...,xn,mmm个约束条件∑kixi=bi\sum k_ix_i= b_i∑kixi=bi。题目要求所有的解非负,即xi≥0x_i\geq 0xi≥0。求解目标方程∑kixi\sum k_ix_i∑kixi的最大值。模型转化遇到x1+x2≤7x_1+x_2\leq 7x1+x2...原创 2019-09-28 18:08:39 · 611 阅读 · 0 评论 -
min_25筛(积性函数求和)
A:如来神掌!B:min_25筛~A:且慢,我投降。应用解决一些较为普遍类型的积性函数的求和问题,∑i=1nf(i)\sum_{i=1}^{n}f(i)∑i=1nf(i),可以用min_25min\_25min_25筛的前提是:可以在过程中快速求解f(pk)f(p^k)f(pk)。时间复杂度为O(n34logn)O(\frac{n^{\frac{3}{4}}}{logn})O(log...原创 2019-09-27 17:45:21 · 620 阅读 · 0 评论 -
指数型母函数(Counting Sequences II)
泰勒展开公式:常见的公式:ex=1+x+x22!+x33!+...e^{x}=1+x+\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+...ex=1+x+2!x2+3!x3+...e−x=1−x+x22!−x33!+...e^{-x}=1-x+\dfrac{x^2}{2!}-\dfrac{x^3}{3!}+...e−x=1−x+2!x2−3!x3+...ekx=...原创 2019-09-15 18:48:18 · 1135 阅读 · 0 评论 -
类欧几里得算法
After All在比较的过程中,向下取整和向上取整可以直接省略,例如⌊ab⌋<c→a<bc\lfloor\frac{a}{b}\rfloor<c\toa<bc⌊ba⌋<c→a<bc。证明也很简单,写成⌊ab⌋<⌊bcb⌋\lfloor\frac{a}{b}\rfloor<\lfloor\fra...原创 2019-09-05 09:43:18 · 566 阅读 · 0 评论 -
D. Power Tower(幂塔取模 欧拉降幂)
original link - http://codeforces.com/problemset/problem/906/D题意:给出一个数组,每次查询[L,R][L,R][L,R]求:aL(aL+1(aL+2...aR))%moda_L^{(a_{L+1}^{(a_{L+2}^{...a_R})})}\%modaL(aL+1(aL+2...aR))%mod,例如2,3,4→2(34)...原创 2019-09-01 21:09:48 · 620 阅读 · 0 评论 -
NTT模板
#include<cstdio>#define swap(x,y) x ^= y, y ^= x, x ^= y#define LL long long const int MAXN = 3e6 + 10, P = 998244353, G = 3, Gi = 332748118; char buf[1<<21], *p1 = buf, *p2 = buf;inl...原创 2019-08-29 14:23:31 · 187 阅读 · 0 评论 -
一次同余方程(ax%p=b)
最小非负解求 ax≡b(mod  p)ax\equiv b(mod\; p)ax≡b(modp)的最小非负解。公式化为:ax+py=bax+py=bax+py=b此时用扩展欧几里得算法求解即可。/* * Author : Jk_Chen * Date : 2019-08-21-10.26.44 */#include<bits/stdc++....原创 2019-08-21 11:01:49 · 942 阅读 · 0 评论 -
多项式插值法
Lagrange多项式插值给出样例插值点,求出XXX的函数值F(X)F(X)F(X)。其中X∈RX\in RX∈R时间复杂度为O(k2)O(k^2)O(k2),kkk为插值点个数代码:#include <bits/stdc++.h>#define rep(i,a,b) for(ll i=a;i<=b;i++)using namespace std;typedef l...原创 2019-08-20 22:28:09 · 2241 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场)——Quadratic equation(二次同余方程求解)
original link - https://ac.nowcoder.com/acm/contest/889/B题意:给出b,cb,cb,c,求出满足x+y≡b,x∗y≡c,mod  1e9+7x+y\equiv b,x*y\equiv c,mod\;1e9+7x+y≡b,x∗y≡c,mod1e9+7的一对x,yx,yx,y。解析:(x+y)2≡x2+y2+2...原创 2019-08-15 19:03:46 · 236 阅读 · 0 评论 -
BSGS,扩展BSGS(求离散对数 b^x%p=n)
应用大步小步法(Baby−Step−Giant−StepBaby-Step-Giant-StepBaby−Step−Giant−Step,简称BSGSBSGSBSGS),可以在O(logP)O(logP)O(logP)的时间内求出basex≡n(mod  P)base^x\equiv n(mod\;P)basex≡n(modP)的解xxx。过程其实就是一个暴力而已...原创 2019-08-20 20:37:26 · 586 阅读 · 0 评论 -
杜教筛(下):狄利克雷卷积
定义: 定义f,gf,gf,g两个函数的狄利克雷卷积运算(*)为:(f∗g)(n)=∑d|nf(d)∗g(nd)(f∗g)(n)=∑d|nf(d)∗g(nd)(f*g)(n)=\sum_{d|n}f(d)*g(\frac{n}{d})性质:狄利克雷卷积满足:交换律:f∗g=g∗ff∗g=g∗ff*g=g*f结合律:(f∗g)∗h=f∗(g∗h)(f∗g)∗h=f∗(g∗h)...原创 2018-09-12 18:42:20 · 1265 阅读 · 1 评论 -
杜教筛(上):整除分块,积性函数,欧拉与莫比乌斯
参考资料整除分块:当我们求∑ni=1f([ni])∑i=1nf([ni])\sum_{i=1}^nf([\frac{n}{i}])的时候,如果1到n求一遍感觉太傻了,因为会有很多重复的计算,例如:n=10000时,i在[101,111]时,都有[ni]=9[ni]=9[\frac{n}{i}]=9,所以我们只需要对所有数分成如上的一个一个区间就可以节省很多不必要的时间设:[ni]=d[...原创 2018-09-12 18:06:19 · 1415 阅读 · 0 评论 -
逆元详解
老早便想学这个东西,无奈学这个需要很多知识做铺垫。今日终于了结了这道坎建议先学的知识:费马小定理扩展欧几里得算法逆元介绍及应用(inv):求解公式(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法: 设c是b的逆元,则有b*c≡1(mod m); 则(a/b)%m = (a/b)*1%m = (a/b)*b*c%m = a*c(mod m); 即...原创 2018-02-10 16:04:07 · 4056 阅读 · 0 评论 -
扩展欧几里得算法(求逆元)
前论1. 欧几里得算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质: gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)公式表述 gcd(a,b)=gcd(b,a mod b) 证明: a可以表示成a = kb + r,则r = a mod b 假设d...原创 2018-02-09 11:56:06 · 7156 阅读 · 1 评论 -
素数筛(线性筛法)
别问我为什么现在才学。。。素数也算是程序设计比赛中经常遇到的老对手了,对付它最基本的方法(这里说的是基本,不是蠢,怎么说我以前也一直在用)是通过素数的定义判断,只能被1和本身整除的数是素数。这种方法适合判断单个数是否为素数,当要求一个范围时,这种方法就基本上是T了。这时我们就可以使用素数筛来做。筛法的思想是去除要求范围内所有的合数,剩下的就是素数了,而任何合数都可以表示为素数的乘积,因...原创 2018-02-06 16:30:41 · 3452 阅读 · 0 评论 -
费马小定理
从刚开始学就经常会会听到这个东西,但是由于种种原因,至今才有所涉猎。首先,讲一下同余。同余所描述的是两个整数的一种等价关系,如果两个整数a和b除以同一个整数p所得的余数相等,我们就说这两个整数模p同余。记作a ≡ b(mod p) 。 例如:3 ≡ 5(mod2),同余为1性质: 同余的重要性体现在它保持了普通等式的许多性质。我们知道普通等式有以下 恒有a = a 如果a = ...原创 2018-02-06 15:28:48 · 2133 阅读 · 1 评论 -
反素数(其实重点不是反素数。。。)
初学反素数的时候总会感到很迷茫,因为网上你找来找去只有ACdreamer一个版本的博客。我查阅了很多资料,也问过几位学长,才知道,重点不是反素数。 \\ 怎么说呢,你不能把反素数当成卡特兰数这种以数为中心的东西,其实反素数在我看来更像是一种数论。关键不是去求这个反素数,而是靠反素数的定义带来的思想做题。反素数#define Y(i) i的因数的个数我们把n称为反...原创 2018-08-23 22:30:37 · 1135 阅读 · 0 评论 -
ACM中的数学问题合集
数学在ACM竞赛中通常会占很大的比重,例如这次暑假的多校比赛中,几乎所有题目都和数学有着很大的联系所以统计一下一些常用的知识点数论欧拉定理威尔逊定理中国剩余定理费马小定理...原创 2019-08-20 22:30:35 · 11694 阅读 · 3 评论 -
ACM数论基本定理
数论四大定理这里就不重复说明了,讲一下一些重要的其他定理#define Y(n) n的因子个数 #define F(n) 斐波那契数列第n项 #define p 某个素数 #define ϕ(n) n的欧拉函数值gcd(F(n),F(m))=F(gcd(n,m))gcd(F(n),F(m))=F(gcd(n,m))gcd(F(n),F(m))=F(gcd(n,m))g...原创 2018-08-23 15:21:47 · 1444 阅读 · 2 评论 -
大整数分解——Pollard Rho算法(floyd判圈)
环境 : 给定一个数n,让你把它分解成多个素数的乘积你离此算法大成就差一个Miller-Rabin素数检测算法了对于一个数n,只需要如下步骤即可分成若干个素数 找到一个数p , 使p|n 那么n就可以变成p和n/p 如果p或者n/p不是质数,当成n重新第一步 判断是否为质数用Miller-Rabin素数检测算法最关键的是如何找到这个数p...原创 2018-08-23 10:19:05 · 3272 阅读 · 2 评论 -
二次剩余,二次同余方程
定义对于方程x2≡n(modp),nx2≡n(modp),nx^2\equiv n (mod \;p)\;,\;n为p的二次剩余 , x为该二次同余方程的解 就如字面意思一样 , n就是一个二次项%p后的剩余应用求n−−√%p,n%p,\sqrt{n}\%p\;,若n为p的二次剩余 , 那么很明显n−−√%p=x%pn%p=x%p\sqrt{n}\%p=x\%p 简...原创 2018-08-27 15:09:12 · 2216 阅读 · 0 评论 -
Miller-Rabin素数检测算法
费马小定理二次探测定理:p为一个素数,则x2≡1(modp)x2≡1(modp)x^2\equiv 1(mod\;p)在(0,p)范围内的解为x=1或x=p-1Miller-Rabin素数检测算法:原创 2018-08-22 20:30:30 · 1447 阅读 · 0 评论 -
逆元在阶乘上的运用
what’s 逆元原题:xiaoxin juju needs help题意:给一字符串,问用这个字符串里面的字符可以拼成多少个不同的回文串解析:把回文串分成左右两边,即字母x出现次数除2,求排列C假设左半边有x个字母a,y个字母b,z个字母c,C==(x+y+z)! / x! / y! / z!普通的做法有个bug,(x+y+z)!当然可以做,但是%mod后再除x!呢?...原创 2018-03-12 21:19:24 · 797 阅读 · 0 评论 -
素数距离
原题:1223题意:求区间内最近和最远的两个素数解析:范围1~MAX,所以不能一次性用素数筛筛完所有可能数,因为即使你是MAX,也只需要判断到sqrt(MAX)是不是MAX的因数,所以我们可以筛1到sqrt(MAX)的素数,然后用这些数再来筛除给定区间的非素数。代码:#include&lt;stdio.h&gt;#include&lt;math.h&gt;#incl...原创 2018-03-22 08:45:28 · 413 阅读 · 0 评论 -
Lucas定理(求组合数取模) 扩展Lucas定理(解决模数非质情况)
在比赛时 , 如果遇到CmnCnmC_n^m的n比较大 , 我们不能通过预处理阶乘和逆元来计算 , 而题目又要求对答案取一个质数模的时候 , 我们可以用Lucas定理来简化计算Lucas 定理:定义 : n,m是非负整数,p是素数时 , Lucas(n,m)=Cmn%pLucas(n,m)=Cnm%pLucas(n,m)=C_n^m\;\% p公式 : Lucas(n...原创 2018-08-25 11:22:16 · 1927 阅读 · 0 评论 -
莫比乌斯反演快速入门
莫比乌斯反演并没有你看到的其他博客里写的那么复杂,那么多公式,很简单的经典例题 :∑i=1N∑j=1Mgcd(i,j)=n,即多少gcd=n∑i=1N∑j=1Mgcd(i,j)=n,即多少gcd=n\sum_{i=1}^{N}\sum_{j=1}^{M}gcd(i,j)=n,即多少gcd=n 可以看一下这题的其他做法假设你已经知道了莫比乌斯函数μ(i)μ(i)\m...原创 2018-08-24 14:01:54 · 1320 阅读 · 0 评论 -
欧拉函数 欧拉定理 欧拉降幂
定义:ϕ(i)ϕ(i)\phi(i)表示第i个欧拉函数的值,代表了从1到i与i互质的数的个数,例如ϕ(8)=4ϕ(8)=4\phi(8)=4,因为1,3,5,7均和8互质通式:ϕ(x)=x∗∏ni=111−pi(pi为x的质因子)ϕ(x)=x∗∏i=1n11−pi(pi为x的质因子)\phi (x)=x*\prod_{i=1}^n\dfrac{1}{1-p_i} (p_i为x的质因子)...原创 2018-08-13 20:12:56 · 2791 阅读 · 4 评论