/*
一共有n个房间m种宗教,如果不考虑是否会越狱那么一个房间可以放m种宗教,
那么总共就是m的n次。但两个邻近房间不能相同,如果第一个能放m个,那么第二个
就只能放m-1个,第三个不能与第二个相同还是m-1个 类推下去,那么有m×(m-1)的n-1次
两者相减就能得出答案。
*/
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define M 100003ll
using namespace std;
typedef long long ll;
ll m,n,ans;
ll ksm(ll x,ll y)//&的作用是为了判断是奇数还是偶数,因为二进制只有0,1故是为了判断是否为0,1
{
ll re=1;
while(y)
{
if(y&1)re*=x,re%=M;
x*=x,x%=M;
y>>=1;//移去最后一位
}
return re;
}
int main()
{
cin>>m>>n;
m%=M;
ans=ksm(m,n);
ans-=m*ksm(m-1,n-1);
ans%=M;
ans+=M;
ans%=M;
cout<<ans<<endl;
}
BZOJ 1008 越狱
最新推荐文章于 2018-06-25 21:20:43 发布