样例输出79求条
查看原帖
样例输出79求条
1211668
WMY_楼主2025/7/28 21:01
#include <bits/stdc++.h>
using i64 = long long;
using u64 = unsigned long long;
#define dbg(...) fprintf(stderr, __VA_ARGS__)

const int MAXN = 5000005;

int n, p, k, a[MAXN];
int s[MAXN], t[MAXN];

int qpow(int a, int b) {
	if (!b) {
		return 1;
	}
	int c = qpow(a, b/2);
	c = 1ll * c * c % p;
	if (b%2) {
		c = 1ll * c * a % p;
	}
	return c;
}

int main() {
	scanf("%d%d%d", &n, &p, &k);
	s[0] = 1;
	for (int i = 1; i <= n; ++i) {
		scanf("%d", a+i);
		s[i] = 1ll * s[i-1] * a[i] % p;
	}
	t[n] = qpow(s[n], p-2);
	for (int i = n-1; i >= 1; --i) {
		t[i] = 1ll * t[i+1] * a[i] % p;
	}
	int powk = 1, ans = 0;
	for (int i = 1; i <= n; ++i) {
		powk = 1ll * powk * k % p;
		ans = (ans + 1ll * powk * s[i-1] % p * t[i]) % p;
	}
	printf("%d\n", ans);
}
2025/7/28 21:01
加载中...