玄学错误
  • 板块灌水区
  • 楼主cjWYZtql
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/4/5 08:18
  • 上次更新2023/10/23 19:24:26
查看原帖
玄学错误
335771
cjWYZtql楼主2023/4/5 08:18

我在做一道站外题(给定 n,mn, m,求 ∑i=1naim mod 10007\sum\limits_{i=1}^n a_i^m \bmod 10007)的时候写出了下面的代码:

#include <bits/stdc++.h>

#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ll long long
#define ul unsigned long long

using namespace std;

const ll M = 10007ll;

ll ksm(ll a, ll p, ll mod) {
	if (p == 0ll) return 1ll;
	else if (p == 1ll) return a;
	else if (p % 2ll == 0ll) {
		return (ksm(a, p / 2ll, mod) * ksm(a, p / 2ll, mod)) % mod;
	} else {
		return (a * ksm(a, p / 2ll, mod) * ksm(a, p / 2ll, mod)) % mod;
	}
} 

int main() {
	int T;
	int n, m;
	scanf ("%d", &T);
	while (T--) {
		ll ans = 0ll;
		scanf ("%d%d", &n, &m);
		int k = n % 10007, q = n / 10007;
		for (int i = 1; i <= k; ++i) ans += ksm(1ll * i, 1ll * m, 10007ll) * (q + 1);
		puts("ccf");
		for (int i = k + 1; i < 10007; ++i) {
			ans += ksm(1ll * i, 1ll * m, 10007ll) * q;
			cout << ans << ' ' << i << endl;
		}
		ans %= 10007ll;
		printf ("%lld\n", ans);
	}
}

注释掉 31∼3431 \sim 34 行的时候会输出结果,但是不注释就会卡住,而且 3030 行的 puts("ccf") 也不会正常输出。

2023/4/5 08:18
加载中...