只列舉了做題中用到過的一些數學定理,先暫時整理一部分。
1、求n的位數:
log10(n)
2、n為質數:
a^m = a^(m % (n-1)) (mod n)
3、尤拉函式:
小於等於n的數中,與n互質的數的數目。
euler函式表達通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),
其中p1,p2……pn為x的所有素因數,x是不為0的整數。
euler(1)=1(唯一和1互質的數就是1本身)。
補充性質:
(1)對於質數p,φ(p) = p - 1。注意φ(1)=1。
(2)對於互質的正整數a和n,有aφ(n) ≡ 1 mod n。(尤拉定理)
(3)若m,n互質,φ(mn)=φ(m)φ(n)。
(4)若n是質數p的k次冪,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因為除了p的倍數外,其他數都跟n互質。
(5)當n為奇數時,φ(2n)=φ(n)
(6)設a為n的質因數,
若( a | (n/a) ) 則有φ(n) = φ(n / a) * a;
否則:φ(n) = φ
(n / a) * (a - 1)。
(7)乙個數的所有質因子之和是euler(n)*n/2。
4、卡特蘭數
令h(0)=1,h(1)=1,catalan數滿足:
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)h(0) (n>=2)
h(n)=h(n-1)*(4*n-2)/(n+1);
h(n)=c(2n,n)/(n+1) (n=0,1,2,...)
h(n)=c(2n,n)-c(2n,n-1)(n=0,1,2,...)
應用:括號化、
出棧次序、
凸多邊形三角劃分、
給定節點組成二叉樹
擴充套件:對於在n位的2進製中,有m個0,其餘為1的catalan數為:c(n,m)-c(n,m-1)。
指標 待補充
將位址視為指定的量,將值視為派生量。指標 一種特殊型別的變數 用於儲存值的位址。指標名表示的是位址,運算子被稱為間接值或解除引用運算子,將其應用於指標,可以得到該位址處儲存的值。例,假設manly是乙個指標,manly表示的是乙個位址,manly表示儲存在該位址處的值。宣告和初始化 運算子兩遍的空格...
dinic 模板 待補充
include using namespace std define mk make pair define pus push back define mo 1005 vector d mo vector de mo int tag mo int dfs int node,int low,int n...
常用其他(待補充)
echo 輸出乙個或者多個字串 var dump 列印變數的詳細資訊,可以一次列印乙個或多個變數的資訊 print r 列印陣列的資訊 unset 銷毀變數,可以一次銷毀乙個或多個變數,銷毀之後變數的值為null header語句的作用 header content type text html c...