数学模板

把常用的数学模板放这里免得忘了

素数表

 1 int prime[maxn];
 2 void prime()
 3 {
 4     int i, j;
 5     memset(prime, 1, sizeof(prime));
 6     for (i = 2; i < maxn; i++){
 7         if (prime[i]){
 8             for (j = 2; i*j < maxn; j++)
 9                 prime[i*j] = 0;
10         }
11     }
12     prime[0] = prime[1] = 0;
13     prime[2] = 1;
14 }

组合数

 1 int cur[maxn][maxn] = { 1 };
 2
 3 //预处理 利用杨辉三角计算组合数
 4 void init(){
 5     int i, left, right;
 6     for (i = 1; i <= maxn; i++){
 7         cur[i][0] = cur[i][i] = 1;
 8         left = 1, right = i - 1;
 9         while (left <= right){
10             cur[i][left] = cur[i - 1][left - 1] + cur[i - 1][left];
11             cur[i][right--] = cur[i][left++];//组合数性质cur[i][j]=cur[i][i-j];
12         }
13     }
14 }

高精度幂取模

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 int main()
 5 {
 6     unsigned long long b,c,cur,res,i;
 7     string a;
 8     while(cin>>a){
 9         cin>>b>>c;
10         for(i=cur=0;a[i]!=‘\0‘;i++){
11            cur=cur*10+a[i]-‘0‘;
12            cur%=c;
13         }
14         res=1;
15         while(b){
16             if(b&1) res=res*cur%c;
17             cur=cur*cur%c;
18             b>>=1;
19         }
20         cout<<res<<endl;
21     }
22     return 0;
23 }

模运算法则:

模运算与基本四则运算有些相似,但是除法例外。其规则如下:

(a + b) % p = (a % p + b % p) % p (1)

(a - b) % p = (a % p - b % p) % p (2)

(a * b) % p = (a % p * b % p) % p (3)

(a^b) % p = ((a % p)^b) % p (4)

推论:

若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);(10)

若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);(11)

若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),

(a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); (12)

费马定理:若p是素数,a是正整数且不能被p整除,则:a^(p-1) mod p = 1 mod p

推论:若p是素数,a是正整数且不能被p整除,则:a^p mod p = a mod p

二分快速幂

1 long pow(int x, unsigned int n){
2     long p = 1;
3     while (n){
4         if (n & 1) p *= x;
5         x *= x;
6         n >>= 1;
7     }
8     return p;
9 }

时间: 2024-10-03 20:16:29

数学模板的相关文章

acwing提高课数学模板

数学模板 筛质数 素数筛 AcWing 196. 质数距离 给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你还需要找到距离最远的两个相邻质数D1和D2(即D1-D2是最大的),如果存在相同距离的其他相邻质数对,则输出第一对. 输入:每行输入两个整数L和U,其中L和U的差值不会超过1000000. 输出:对于每个L和U ,输出一个结果,结果占一行. 结果包括距离最近的相邻质数对和

luogu P4725 多项式对数函数 (模板题、FFT、多项式求逆、求导和积分)

手动博客搬家: 本文发表于20181125 13:25:03, 原地址https://blog.csdn.net/suncongbo/article/details/84487306 题目链接: https://www.luogu.org/problemnew/show/P4725 题目大意: 给定一个\(n\)次多项式\(A(x)\), 求一个\(n\)次多项式\(B(x)\)满足\(B(x)\equiv \ln A(x) (\mod x^n)\) 题解: 神数学模板题-- 数学真奇妙! 前驱

第六届山东省赛总结贴

省赛结束快两个星期辣,原谅弱到现在才写总结,拖延症晚期路过(逃. 其实觉得自己挺幸运的,省赛前因为各种原因和FF and +才组队,然后瞬间抱上大腿,完美蜕变,成为一名辅助,走上人生巅峰. 一群不会起名字的BD,在FF偶尔听到的一首歌里我们选了呢个乐队的名字Dreamtale(梦境传说,瞬间像磕了药一样,精神抖擞.当时距离省赛还有两个月不到的时间,为了磨合也是锻炼,每周四下午都要打一场比赛,加上周六的比赛,一周双开.其实初学当一名辅助也是很坎坷的,开始周四做的是往年省赛的题目,初学辅助有的细节方

如何用MathType编辑集合运算符号

在涉及到集合的运算中,有交并且几种常见的运算,这在数学问题中也是很常见的公式.在用MathType编辑这些符号时,该怎么编辑呢?下面就介绍MathType集合运算符号的编辑方法. 具体操作过程如下: 1.打开MathType公式编辑器,进入到编辑模式后,编辑集合公式.  在MathType编辑窗口编辑集合符号 2.在“设置理论符号”模板中选择相应的符号点击输入即可.属于.不属于.包含.不包含.交集.并集等常见的集合运算符号都可以进行使用.  在“设置理论符号”模板中选择相应的符号 以上内容向大家

1009 Intersection (Hdu)

·模板题,求两环相交面积: ·有模板的情况下只需要考虑如何进行容斥即可. 我们画图进行解释: 对于如上两个圆环来说,首先我们将两个较大的圆分别定义为圆a和圆c:圆a中的小圆为圆b:圆c中的小圆为圆d. 那么对于这两个圆环来说,其相交面积,我们是要求1和4两部分. 第一部分:两大圆相交面积: 1+2+3+4+5 第二部分:圆a与圆d相交面积(一大一小):3 + 5 第三部分:圆b与圆c相交面积(一小一大):2 + 5 第四部分:两小圆相交面积:5 ·那么结论就很明显: 两圆环相交面积 = 第一部分

数学建模模板

全国大学生数学建模竞赛就开始了,这里分享一下我自己的数学建模论文模板,写的不好,请指教: 论文标题   摘要 内容要点: 1.研究目的:本文研究······问题. 2.建立模型思路:首先,本文······. 然后针对第一问······问题,本文建立······模型. 在第一个······模型中,本文对哪些问题进行简化,利用什么知识建立什么模型.接下来,第二个模型······ 3.求解思路,使用的方法 针对模型胡求解,本文使用什么方法,计算出,并只用什么工具求解出什么问题,进一步求出什么结果. 4

模板—数学—矩阵树定理

模板—数学—矩阵树定理 Code: #include <cstdio> #include <algorithm> using namespace std; #define N 1010 #define mod 1000000000 long long ans,squ[N][N];int n,m; long long calc(int n) { long long tmp=1; for(int i=1;i<n;i++) { int j; for(j=i;j<n;j++)

模板—数学—Lucas

模板—数学—Lucas Code: #include <cstdio> #include <algorithm> using namespace std; #define N 100010 int n,m,p,inv[N],powq[N]; int lucas(int n,int m) { if(n<m) return 0; if(n<=p&&m<=p) return 1ll*powq[n]*inv[m]%p*inv[n-m]%p; return

数学知识点总结思维导图模板分享及绘制方法

主要讲述的是怎样对数学知识点进行总结归纳的方法,按照原定的数学知识对其整体进行总结绘制为如下思维导图,下面讲述怎样快速利用思维导图绘制数学知识点总结思维导图.将知识点进行总结归纳的作用在于对知识点进行更深层次的掌握,能在学习中更加轻松的利用.1.该思维导图模板有六个分支,新建中心主题之后围绕中心主题所搭建的节点,首先填充的是函数知识中的一般形式,将会出现的情况罗列出来.2.双击节点对内容进行填充,第二个节点中讲述的内容是围绕函数的走向以及所在的象限进行总结,可以加深记忆.3.第三个节点是围绕函数