監獄有連續編號爲1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄
輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12
可能越獄的狀態數,模100003取餘
2 3
6
6種狀態爲(000)(001)(011)(100)(110)(111)
#include <stdio.h>
#include <algorithm>
using namespace std;
long long u=100003;
long long pow(long long a,long long b){
if(b==0) return 1;
else if(b==1) return a%u;
else{
long long ans=pow(a,b/2);
ans=(ans*ans)%u;
if(b%2) ans=(ans*a)%u;
return ans%u;
}
}
int main(){
long long n,m;
scanf("%lld%lld",&m,&n);
printf("%lld",(pow(m,n)%u-(pow(m-1,n-1)*m)%u+u)%u);
return 0;
}