【HNOI2008】越狱(快速幂)

这题容易多想。其实就是一个简单且直观的想法。

所有的情况:每个房间都有m种选择,所以n个房间就是m^n种情况。

无人越狱的情况:相邻房间不同即可,第一个房间有m种选择,后面的由于不能与相邻的相同,只有m-1种选择,所以方案是m*(m-1)^(n-1)。

只需用总方案减去不可行的方案即可。

#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const LL mod=100003;

LL qkpow(LL a,LL k)
{
	LL s=1;
	while(k)
	{
		if(k%2) s=s*a%mod;
		a=a*a%mod;
		k>>=1;
	}
	return s;
}

int main()
{
	LL M,N;
	cin>>M>>N;
	LL t=qkpow(M,N),t2=M%mod*qkpow(M-1,N-1)%mod;
	cout<<(t-t2+mod)%mod;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/WWWengine/article/details/82290382