一.快速冪模板
int powermod(int a,int b,intview codemod)
returnt;}
//(a^b)%mod
參考:鏈結1
鏈結2二.取模運算的性質:
(1)(a+b)%c=(a%c+b%c)%c
(2)(ab)%c=(a%c)(b%c)%c
三.相關題目
n
oip2013tg d1t1轉圈遊戲
不難得出
ans=(x+m*10^k)%n
由資料範圍,使用快速冪來做
1 #include2 #include3view code4long
long powermod(int a,int b,intc)5
14return
t;15}16
17int
main()
18
bzoj1008越獄
題目鏈結
首先我認為題目的表述有些值得商榷的地方,「
每個犯人可能信仰其中一種
」,是否包含不信仰宗教的情況? 正確答案中是按照每個人都信仰一種宗教來做的。
一共會有m^n種情況。由於直接求會發生越獄的情況數較麻煩,故可以先算不會越獄的情況:第一間有m種選擇,第二間則有(m-1)種選擇(不與第一間相同),以此類推,根據乘法原理,共有m*(m-1)^(n-1)種情況
則ans=m^n-m*(m-1)^(n-1)
由於1<=m<=10^8,1<=n<=10^12,所以需要使用快速冪
1 #include2view code3const
int mod=100003;4
long
long
m,n,tmp,cnt;56
int powermod(long
long a,long
long b,long
long
c)15
return
i;16}17
18int
main()
19
矩陣 快速冪及應用
一 快速冪部分 求a b,如下。include using namespace std int quickpow int x,int y return ans int main 其中 位移運算,就是把y轉換為 二進位制數 整體向右移一位,高位補零,最低位消失,通常右移一位就等價於y除以2再賦給b。可...
模板 快速冪
1.萌新的話 快速冪主要是用來解決一些超時間複雜度的冪運算。其主要思想是根據乙個結論 2 n 4 n 2 這樣原本暴力的o n 演算法優化為了o logn 的演算法了。時間複雜度 2.include include include include include using namespace st...
快速冪(模板)
對於任何乙個整數的模冪運算 a b c 對於b我們可以拆成二進位制的形式 b b0 b1 2 b2 2 2 bn 2 n 這裡我們的b0對應的是b二進位制的第一位 那麼我們的a b運算就可以拆解成 a b0 a b1 2 a bn 2 n 對於b來說,二進位制位不是0就是1,那麼對於bx為0的項我們...