1.题目链接。a 水题。简单的分析一下,不考虑任何限制,答案就是pow(M,N)。注意,题虽然简单,但是我觉得推理是需要依据的,我们根据相邻的点是不是一种颜色把全集划分为两个集合,这样可以做到不重不漏。那么考虑分步乘法:M*(M-1)*(M-1)...(M-1)=M*pow(M-1,N-1)。二者相减就是答案。
using namespace std;
ll mod = 100003;
ll qpow(ll a, ll b) {
ll res = 1;
while (b)
{
if (b & 1)res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
int main()
{
ll M, N;
while (~scanf("%lld%lld", &M, &N))
{
ll ans = qpow(M, N);
ll ans1 = M * qpow(M-1, N - 1) % mod;
ans = (ans - ans1 + mod) % mod;
cout << ans << endl;
}
return 0;
}