1008: [HNOI2008]越獄
Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4516 Solved: 1922
[Submit][Status]
Description
監獄有連續編號爲1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄
Input
輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12
Output
可能越獄的狀態數,模100003取餘
Sample Input
Sample Output
HINT
6種狀態爲(000)(001)(011)(100)(110)(111)
c++
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
long long n,m,ans=0;
int pf(long long x1,long long x2)
{
int x=1;
while (x2>0)
{
if (x2%2==1) x=x*x1%100003;
x1=x1*x1%100003;
x2/=2;
}
return x;
}
int main()
{
scanf("%lld%lld",&m,&n);
int an;
ans=pf(m,n)+100003;
an=pf(m-1,n-1)*m%100003;
ans=(ans-an)%100003;
printf("%lld\n",ans);
return 0;
}