【BZOJ1008】越狱(HNOI2008)-快速幂
测试地址:越狱
做法:本题需要用到快速幂。
考虑到求能使犯人越狱的序列数量太难,于是反过来求不能使犯人越狱的序列数量。我们令
边界条件为
看到
边界条件为
注意到
以下是本人代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ll long long
#define mod 100003
using namespace std;
ll n,m;
ll power(ll a,ll b)
{
ll s=1,ss=a%mod;
while(b)
{
if (b&1) s=(s*ss)%mod;
b>>=1;ss=(ss*ss)%mod;
}
return s;
}
int main()
{
scanf("%lld%lld",&m,&n);
printf("%lld",((power(m,n)-m*power(m-1,n-1))%mod+mod)%mod);
return 0;
}