/*
快速冪模板
by:qpswwww(zyk)
含二分快速冪、位運算快速冪
*/#define long long long int
int mod; //取模
long normalpow(long base,long pow) //二分法求base^pow快速冪
return out;
}long fastpow(long base,long pow) //位運算求快速冪
base*=base;
pow>>=1;
} return out;
}
例題:bzoj 1008 hnoi 2008 越獄
監獄有連續編號為1...n的n個房間,每個房間關押乙個犯人,有m種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄
輸入兩個整數m,n.1<=m<=10^8,1<=n<=10^12
可能越獄的狀態數,模100003取餘
2 36
6種狀態為(000)(001)(011)(100)(110)(111)
題目的具體分析請看我的另一篇博文這裡只貼上使用快速冪模板的**
/*
快速冪模板
by:qpswwww(zyk)
含二分快速冪、位運算快速冪
*/#include #define long long long int
int mod; //取模
long normalpow(long base,long pow) //二分法求base^pow快速冪
return out;
}long fastpow(long base,long pow) //位運算求快速冪
base*=base;
pow>>=1;
} return out;
}int main()
二分快速冪
在a,b為整數時,若 b很大,如 b 10 25 的時候,我們就要進行優化。如果b是偶數,則可以看作 a b a b 2 2 如果b是奇數,則 a b a b 1 2 2。則有兩種方法,一種遞迴 dfs 一種迴圈,遞迴如下 int dfs int a,int b,int mod int temp d...
二分快速冪
題目 ac include includeusing namespace std long long pow long long a,long long b,long long mod 二分快速冪 int main long long n,m cin n m long long mod 100000...
二分快速冪
對於a b,普通的求法是用乙個迴圈一直乘b個a,這樣的方法對於某些題目來說可能顯得比較慢。二分快速冪是一種利用b的二進位制特徵來快速求a b的演算法。例如 a 2,b 35 則b的二進位制表示形式為100011 則 a b 2 32 2 2 2 1 有了這樣的思路之後,就不用迴圈b次了。假設b的二進...