蒟蒻求助,样例过了,提交全Wa
查看原帖
蒟蒻求助,样例过了,提交全Wa
249422
TinyMirror1楼主2020/9/22 20:03

测评记录

#include <iostream>
#include <cstdio>
using namespace std;
const int maxn = 5e6 + 5;
typedef long long ll;
inline ll read() {
	ll x = 0;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + (ch ^ 48);
		ch = getchar();
	}
	return x;
}
ll p;
int n, q, front[maxn], back[maxn], a[maxn], k[maxn];
ll inv(int x) {
	if (x == 1) return 1;
	return ((ll)(p - p / x) * inv(p % x)) % p;
}
int main() {
	n = read(), p = read(), q = read();
	k[0] = front[0] = back[n + 1] = 1;
	for (register int i = 1; i <= n; ++i) {
		a[i] = read();
		front[i] = ((ll)front[i - 1] * a[i]) % p;
		k[i] = ((ll)k[i - 1] * q) % p;
	}
	for (register int i = n; i >= 1; --i) {
		back[i] = ((ll)back[i + 1] * a[i]) % p;
	}
	ll ans = 0;
	for (register int i = 1; i <= n; ++i) {
		ans = (ans + ((ll)k[i] * ((ll)front[i - 1] * back[i + 1]) % p) % p) % p;
	}
	ans = (ans * inv(front[n])) % p;
	cout << ans;
	return 0;
}
2020/9/22 20:03
加载中...