1. 程式人生 > >洛谷P3197 [HNOI2008]越獄

洛谷P3197 [HNOI2008]越獄

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]越獄