codevs1851 越獄

題目描述 Description

監獄有連續編號爲1...N的N個房間,每個房間關押一個犯人,有M種宗教,每個犯人可能信仰其中一種。如果相鄰房間的犯人的宗教相同,就可能發生越獄,求有多少種狀態可能發生越獄

輸入描述 Input Description

輸入兩個整數M,N.1<=M<=10^8,1<=N<=10^12

輸出描述 Output Description

可能越獄的狀態數,模100003取餘

樣例輸入 Sample Input

2 3

樣例輸出 Sample Output

6

數據範圍及提示 Data Size & Hint

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

發佈了43 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章