萌新保龄求调(3WA+2TLE)

P5431 【模板】模意义下的乘法逆元 2

@[RTX7070Ti](/user/731239) ```cpp #include <iostream> #include <algorithm> #include <cmath> #include <cstdio> using namespace std; long long n, p, p2, k, ans; long long a[5000010], pre[5000010], suf[5000010]; long long inv(long long x){ if (x == 1) return 1; return (p - p / x) * inv(p % x) % p; } inline void read(long long &x) { char ch = getchar(); x = 0; while(ch < '0' || ch > '9') ch = getchar(); while(ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); } int main(){ //freopen("P5431_1.in", "r", stdin); //freopen("P5431_1.out", "w", stdout); read(n); read(p); read(k); for (long long i = 1; i <= n; i++){ read(a[i]); } pre[1] = a[1]; for (long long i = 2; i <= n; i++){ pre[i] = pre[i - 1] * a[i] % p; } suf[n] = a[n]; for (long long i = n - 1; i >= 1; i--){ suf[i] = suf[i + 1] * a[i] % p; } pre[0] = suf[n + 1] = 1; for (long long i = 1, j = k; i <= n; i++, j = j * k % p){ ans += (long long)j * (pre[i - 1] * suf[i + 1] % p) % p; ans %= p; } cout << ans * inv(pre[n]) % p; return 0; } ```
by Estelle_N @ 2024-03-28 16:36:19


|