1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N = 5e6 + 10; 5 ll fac[N], sv[N], inv[N], a[N]; 6 ll n, p, k; 7 void read(ll &x) { 8x = 0; int f = 1; char ch = getchar(); 9while (ch < '0' || ch >'9') {if (ch == '-') f = -1; ch = getchar();}10while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();11x *= f;12 }13 ll quickpow(ll x, ll y) {14ll ans = 1;15while (y) {16if (y & 1) ans = ans * x % p;17x = x * x % p;18y >>= 1;19}20return ans % p;21 }22 signed main() {23read(n), read(p), read(k);24fac[0] = 1;25for (int i = 1; i <= n; i ++) {26read(a[i]);27fac[i] = fac[i - 1] * a[i] % p;28}29sv[n] = quickpow(fac[n], p - 2);30for (int i = n; i >= 1; i --) sv[i - 1] = sv[i] * a[i] % p;31ll tmp = 1, ans = 0;32for (int i = 1; i <= n; i ++) {33tmp = (tmp * k) % p;34ans = (ans + ((sv[i] * fac[i - 1] % p)) * tmp) % p;35}36printf("%lld\n", ans);37return 0;38 }【P5431 【模板】乘法逆元 2】
经验总结扩展阅读
- 车公庙丰盛町有什么好吃的
- 洋地黄是什么药
- 专科会计要不要学高数啊
- 周六福创始人是谁
- 胡萝卜可以炒什么
- 双星之阴阳师第二季什么时候出
- 美国NBA的球星乔丹的全名
- 怎么退出微信群永久屏蔽
- 林奕含说人们为什么不能承认
- 用完精华乳还用乳液吗