思路
计算总状态数和不越狱的状态数之差。
总状态数为M*N,不越狱的状态数为M∗(M−1)^(N−1)。
用到快速幂。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll pow(ll a, ll b, ll n){
ll ret = 1;
while(b){
if(b & 1) ret = ret * a % n;
a = a * a % n;
b >>= 1;
}
return ret;
}
int main(){
ll m, n;
ll mod = 100003;
cin >> m >> n;
ll tmp = pow(m, n, mod)%mod - m*pow(m-1, n-1, mod)%mod;
cout << (tmp+mod)%mod << endl;
return 0;
}
一开始没过,因为没有 (tmp + mod) % mod 这段,而是直接输出tmp了,这样会溢出。