[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 }

 

posted @ 2017-09-26 21:24  Kaiser-  阅读(56)  评论(0编辑  收藏