总结警钟长鸣
查看原帖
总结警钟长鸣
1330396
Sad_Fool楼主2024/7/2 10:39
  1. 不开 long long 见祖宗,还有不要用 unsigned long long,因为减法可能会出现负数。这时候应该 (a%mod-b %mod+mod)%mod。

  2. 不要把m、n看反。

  3. 不要顺手将指数取模。

  4. 请手写pow。

还有什么想补充的请在评论区留言。

#include <iostream>
#define int long long
using namespace std;
const int mod = 100003;
int qpow(int a, int b) {
	int ans = 1;
	while (b) {
		if (b & 1) ans = a * ans % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return ans;
}

signed main() {
	int m, n;
	cin >> m >> n;
	cout << ( qpow(m, n) % mod - m * qpow(m-1, n-1) % mod + mod ) % mod;
}
2024/7/2 10:39
加载中...