洛谷P3197 [HNOI2008]越獄
阿新 • • 發佈:2017-10-13
tro col mes urn logs 所有 hnoi2008 noi 輸出
題目描述
監獄有連續編號為1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄
輸入輸出格式
輸入格式:
輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12
輸出格式:
可能越獄的狀態數,模100003取余
輸入輸出樣例
輸入樣例#1:2 3
輸出樣例#1:6
說明
6種狀態為(000)(001)(011)(100)(110)(111)、
題解:快速冪
求出所有情況減去不越獄的情況就是越獄的情況
代碼:
#include<iostream> #include<cstdio> #define LL long long #define mod 100003 using namespace std; LL m,n; LL ksm(LL x,LL y){ LL ret=1; while(y){ if(y&1){ ret=ret*x%mod; } x=x*x%mod; y>>=1; } return ret; } int main(){ scanf("%lld%lld",&m,&n); printf("%d\n",(ksm(m,n)-m*ksm(m-1,n-1)%mod+mod)%mod); return 0; }
洛谷P3197 [HNOI2008]越獄