数学模板

 

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

 

素数表

 

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

 

 

 

 

 

 

组合数

 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 }
View Code

 

 

高精度幂取模

 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 }
View Code

 

模运算法则:

模运算与基本四则运算有些相似,但是除法例外。其规则如下:
(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 }
View Code

 

posted @ 2015-06-09 18:47  繁夜  阅读(260)  评论(0编辑  收藏  举报