[HNOI2008]越狱 题解

题面:

我们知道:相邻房间的犯人的宗教相同的方案数=总方案数-相邻房间的犯人的宗教不相同的方案数;

那么所有方案数是m^n;

我们假设第一个房间有m中取值方案,而对于每个房间(非第一个)都有m-1个取值方案,所以总方案是(m-1)^(n-1)*m;

那么答案就显而易见了;

 

#include 
#define p 100003
using namespace std;
long long KSM(long long a,long long b)
{
	long long res=1;
	while(b){
		if(b&1) res=res*a%p;
		a=a*a%p;
		b/=2;
	}
	return res%p;
}
int main()
{
	long long n,m;
	cin>>m>>n;
	long long ans1=m*KSM(m-1,n-1)%p;
	long long ans2=KSM(m,n)%p;
	long long ans=((ans2-ans1)%p+p)%p;
	cout< 
 

 

 

 

 

你可能感兴趣的:([HNOI2008]越狱 题解)