[BZOJ1008][HNOI2008]越狱
监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱
Input
输入两个整数M,N.1<=M<=10^8,1<=N<=10^12
Output
可能越狱的状态数,模100003取余
Sample Input
2 3
Sample Output
6
数列裸题。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<cmath> 5 #include<iostream> 6 #define mod 100003 7 #define ll long long 8 using namespace std; 9 10 ll ksm(ll a,ll b) 11 { 12 ll ans=1; 13 while (b) 14 { 15 if (b&1) ans=(ans*a)%mod; 16 b>>=1; 17 a=(a*a)%mod; 18 } 19 return ans; 20 } 21 int main() 22 { 23 ll m,n; 24 scanf("%lld%lld",&m,&n); 25 ll res1=ksm(m,n),res2=m*ksm(m-1,n-1)%mod; 26 printf("%lld",(res1-res2+mod)%mod); 27 }