P5431 【模板】乘法逆元 2
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) { 8 x = 0; int f = 1; char ch = getchar(); 9 while (ch < '0' || ch >'9') {if (ch == '-') f = -1; ch = getchar();} 10 while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); 11 x *= f; 12 } 13 ll quickpow(ll x, ll y) { 14 ll ans = 1; 15 while (y) { 16 if (y & 1) ans = ans * x % p; 17 x = x * x % p; 18 y >>= 1; 19 } 20 return ans % p; 21 } 22 signed main() { 23 read(n), read(p), read(k); 24 fac[0] = 1; 25 for (int i = 1; i <= n; i ++) { 26 read(a[i]); 27 fac[i] = fac[i - 1] * a[i] % p; 28 } 29 sv[n] = quickpow(fac[n], p - 2); 30 for (int i = n; i >= 1; i --) sv[i - 1] = sv[i] * a[i] % p; 31 ll tmp = 1, ans = 0; 32 for (int i = 1; i <= n; i ++) { 33 tmp = (tmp * k) % p; 34 ans = (ans + ((sv[i] * fac[i - 1] % p)) * tmp) % p; 35 } 36 printf("%lld\n", ans); 37 return 0; 38 }
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
标签:
乘法逆元
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」