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

 

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值