一.题目链接
二.思路
图片出自https://www.acwing.com/solution/content/47738/
三.代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
const int mod = 100003;
//快速幂
int qmi(int a, ll b)
{
int res = 1;
while(b)
{
if(b & 1) res = (ll)res * a % mod;
a = (ll)a * a % mod;
b >>= 1;
}
return res;
}
int main()
{
int m;
ll n;
scanf("%d%lld", &m, &n);
int res = (qmi(m, n) - (ll)m * qmi(m - 1, n - 1) % mod + mod) % mod;
printf("%d", res);
return 0;
}
四.总结
- 直接考虑不好做的情况下可以多考虑一下补集的思想。
- 在数论题目中经常会涉及取模操作,在计算的过程中可能会出现取模为负数的情况,所以可以先加一个mod再和%mod。