【洛谷P5431】【模板】乘法逆元2【乘法逆元】

原神真端,原神服务端,虚拟机启动部署傻瓜式教学 没玩过抽卡 游戏想体验一下抽卡的感觉,听说原神有真端了,所以弄一个局域网的服务体验一下,这里要感谢一些服务端的分享者。 阅读详情

题目大意:

题目链接:https://www.luogu.org/problem/P5431
给定 n n n个正整数 a i a_i ai​以及 k , p k,p k,p,定义它们在模 p p p意义下的乘法逆元为 1 a i \frac{1}{a_i} ai​1​。
求 ∑ i = 1 n k i a i \sum^{n}_{i=1}\frac{k^i}{a_i} ∑i=1n​ai​ki​。


思路:

这道题要在近 O ( n ) O(n) O(n)的复杂度内求出 n n n个数字的逆元。那么我们来看一下逆元的定义。
若 a b ≡ 1 ( m o d   p ) ab\equiv 1(mod\ p) ab≡1(mod p),则称 a a a为 b b b在模 p p p意义下的逆元。
也就是说,在模 p p p意义下, a a a的逆元即为 1 a \frac{1}{a} a1​。
那么我们设 s [ i ] = Π j = 1 i a [ j ] s[i]=\Pi^{i}_{j=1}a[j] s[i]=Πj=1i​a[j],然后设 i n v = 1 s [ n ] inv=\frac{1}{s[n]} inv=s[n]1​,那么假设我们已经知道了 Π j = 1 i a [ j ] \Pi^{i}_{j=1}a[j] Πj=1i​a[j]的逆元 i n v i inv_i invi​,那么显然有
1 a i − 1 = i n v i × s i − 1 \frac{1}{a_{i-1}}=inv_i\times s_{i-1} ai−1​1​=invi​×si−1​
因为 i n v i = 1 a 1 × a 2 × . . . × a n inv_i=\frac{1}{a_1\times a_2\times ...\times a_n} invi​=a1​×a2​×...×an​1​。
所以这样我们就可以在 O ( n ) O(n) O(n)复杂度内求出所有数字的逆元。
然后 k i k^i ki肯定是预处理的。这道题就解了。


代码:

#include <cstdio>
#include <string>
using namespace std;
typedef long long ll;

const int N=5000010;
ll p,k,a[N],s[N],num[N];
int n;

ll read()
{
	ll d=0;
	char ch=getchar();
	while (!isdigit(ch)) ch=getchar();
	while (isdigit(ch))
		d=(d<<3)+(d<<1)+ch-48,ch=getchar();
	return d;
}

ll power(ll x,ll m)
{
	ll ans=1;
	for (;m;m>>=1,x=x*x%p)
		if (m&1) ans=ans*x%p;
	return ans;
}

int main()
{
	n=read(); p=read(); k=read();
	num[0]=1;
	s[0]=1;
	for (int i=1;i<=n;i++)
	{
		num[i]=num[i-1]*k%p;
		a[i]=read();
		s[i]=s[i-1]*a[i]%p;
	}
	s[n]=power(s[n],p-2);
	ll ans=0;
	for (int i=n;i>=1;i--)
	{
		ans=(ans+s[i]*s[i-1]%p*num[i])%p;
		s[i-1]=s[i]*a[i]%p;
	}
	printf("%lld",ans);
	return 0;
}
SAP Fiori 从技术上而言到底包含哪些组件? SAP Fiori是企业级UX设计的系统化解决方案,基于五大原则构建:角色导向(Role-based)、自适应(Adaptive)、简洁(Simple)、一致(Coherent)和愉悦(Delightful)。其技术实现包含SAPUI5开发框架、Fiori Launchpad统一入口、OData服务网关等核心组件,通过标准化设计模式与开发工具链,显著提升企业应用的用户体验和开发效率。典型案例显示,遵循Fiori原则可缩短30%以上的操作时长,降低50%的培训成本。该体系既保持跨设备一致性,又支持业务场景的深 阅读详情

相关推荐

域格4G网优模块获取

1、获取当前小区信息 接口说明 该命令用于获取当前小区信息。 语法结构 命令类型 格式 返回结果 Execute AT+SCELLINFO +SCELLINFO: <cellMode>,<mcc>,<mnc>,<lac>,<cellId>,<afrcn>,<cpi>,<rxLevel>

自由的幻想 2463

[洛谷] P5431 【模板】乘法逆元2

题目 题目描述 给定NNN个正整数aia_iai​,求它们在模PPP意义下的乘法逆元。 由于输出太多不好,所以将会给定常数KKK,你要输出的答案为: ∑i=1nkiai\sum_{i=1}^n\frac{k^i}{a_i}i=1∑n​ai​ki​ 当然要对PPP取模。 题目解析 我们先把式子中的 aia_iai​ 替换成它的逆元,变成,∑i=1nki×ai−1\sum_{i=1}^nk^i\tim...

AAA_Ljw 620

泛微E8流程监控指南:如何用SQL实时追踪审批节点状态?

本文详细介绍了如何利用SQL实时监控泛微E8系统中的审批流程状态,包括核心数据表结构解析、全链路监控SQL实战以及智能预警机制设计。通过数据库直接查询和状态关联分析,帮助企业快速定位卡顿节点,提升流程效率。适用于需要优化OA系统流程管理的企业IT人员和业务主管。

weixin_30687051的博客 437

洛谷P5431 乘法逆元2

11

65G's Blog 214

gesp c++ 五级知识点

gesp c++ 五级知识点

MMD.然大大 2009

Ubuntu20.04安装Torque-6.1.2单机版(踩坑篇)

说明:PBS排队系统原先是在Centos7安装使用很顺利,但是有客户需求在Ubuntu20.04上使用,着手在Ubuntu20.04安装上安装的时候发现很多报错,并不能顺利安装,网上查找到的教程,有的说是让放弃转slurm,有的是换源安装,但是安装好的版本很低,有许多bug,不是很好用。经过自己慢慢摸索之后,改了部分配置以及源码之后,能够顺利安装,再次记录一下踩坑心得,与大家一起分享学习。如有问题,欢迎大家来撩。...............

华青水上的博客 8087

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

对于本题建议先观看洛谷 P3811 【模板】模意义下的乘法逆元 、和的讲解。

Jianghappy123456的博客 458

VSCode+ESP-IDF开发环境搭建:从零开始创建你的第一个物联网项目(2024最新版)

本文详细介绍了如何在2024年使用VSCode和ESP-IDF搭建物联网开发环境,从零开始创建第一个物联网项目。内容包括环境准备、ESP-IDF配置、项目创建与结构解析、构建烧录步骤以及高级技巧和常见问题解决方案,帮助开发者快速上手ESP32开发。

weixin_29165725的博客 330

数字2的乘法逆元

数字2的乘法逆元 快捷计算方式如下 inv2=mod-mod/2; 推导如下 摘自https://blog.youkuaiyun.com/acdreamers/article/details/8220787 typedef long long ll; const int N = 1e5 + 5; int inv[N]; void inverse(int n, int p) { inv[1] = 1; for (int i=2; i<=n; ++i) { .

mrcrack的博客 3157

基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

/ FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

corlin6688的博客 816

微博scheme

微博scheme

qq_42278595的博客 318

洛谷 P5431 【模板】乘法逆元2

https://www.luogu.com.cn/problem/P5431 思路:设A=∏i=1naiA=\prod_{i=1}^{n}a_iA=∏i=1n​ai​,设inv∗A=1%pinv*A=1\%pinv∗A=1%p,那么aia_iai​的乘法逆元就等于inv∗∏j=1i−1ai∗∏j=i+1naiinv*\prod_{j=1}^{i-1}a_i*\prod_{j=i+1}^na_ii...

xiji333的博客 506

【Matlab】如何使用Simulink进行电池建模和SOC预估

“通过Simulink电池建模进行SOC预估,其实挺容易!” 1 声明 本文只描述一般性电池建模方法,文中出现的电池相关数据来自一些论文或者外文文献,对数据的真实性不做任何保证。 本文参考了不少国内高校的硕士论文和外文文献,所以本篇文章只作为学术性交流,未经...

wanff1204的博客 2万+

[洛谷P5431]【模板】乘法逆元2

题目大意:给定$n(n\leqslant5\times10^6)$个正整数$a_i$,和$k$。求:$$\sum_{i=1}^n\dfrac{k^i}{a_i}\pmod p$$题解:$$令P=\prod_{i=1}^na_i\pmod p\\ans=\dfrac{\sum_{i=1}^nk^i\dfrac P{a_i}}{P}\pmod p\\\dfrac P{a_i}可以前缀积后缀积解决$$卡...

weixin_30600197的博客 143

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

P5431【模板】乘法逆元2

卡常技巧题

Ajwallet 706

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Libre oj #161. 乘法逆元 2 \ P5431 【模板】乘法逆元2

核心是任意n个数取模,可以用模数的性质,在O(N+logp)的复杂度求出 libre oj //#include <bits/stdc++.h> #include<iostream> #include<cmath> #include<cstdio> #include<map> #include<set> #include...

bjfu170203101的博客 573

P5431-[模板]乘法逆元2【递推】

正题 题目链接:https://www.luogu.org/problem/P5431 题目大意 一个长度为nnn的序列aaa。 求(∑i=1nkiai)%p(\sum_{i=1}^n \frac{k^i}{a_i})\% p(i=1∑n​ai​ki​)%p 解题思路 定义si=∏i=1iais_i=\prod_{i=1}^ia_isi​=i=1∏i​ai​ 1si−1=1si∗ai\frac...

QuantAsk 507

[luogu P5431] 【模板】乘法逆元2

题目 https://www.luogu.org/problem/P5431 解题思路 设s=∏i=1nais=\prod_{i=1}^{n}a_is=i=1∏n​ai​ 那么有ans=∑i=1nki∗(s/ai)sans=\sum_{i=1}^{n} \frac{k^i*(s/a_i)}{s}ans=i=1∑n​ski∗(s/ai​)​ 其中s/ai\large s/a_is/ai​可以用前缀...

Nowed 285

打卡信奥刷题(2910)用C++实现信奥题 P5431 【模板】模意义下的乘法逆元 2

本题要求计算n个正整数在模p意义下的乘法逆元之和,并乘以k的幂次后求和。关键点在于高效处理大规模数据的逆元计算。使用前缀积和后缀积优化,通过费马小定理求出总积的逆元,再分解为单个元素的逆元。算法时间复杂度O(n),适用于n≤5×10^6的大数据量。输入采用快速读取优化,避免超时。适用于模数p为质数的情况,利用快速幂求逆元。代码展示了高效处理模运算和前缀积的技巧,是数论题目的典型实现。

Loge谈信奥--一个专注于信奥人的博客 180

洛谷 P3811 【模板】模意义下的乘法逆元

对于乘法逆元,我想大家再熟悉不过了,如过不知道的小伙伴们可以看来学习一下。

Jianghappy123456的博客 722

乘法逆元及简单利用

乘法逆元 定义: 如果一个线性同余方程ax{ax}ax≡ 1{1}1(modmodmod bbb),则xxx称为aaa modmodmod bbb的逆元,记作a−1a^{-1}a−1。 求逆元的常见方法及其模板 扩展欧几里得法: void exgcd(int a, int b) { if (!b) { x = 1; y = 0; return; }

zhy_cx的博客 195

洛谷模板汇整

洛谷模板汇整

Demilly123的博客 883

做题&学习记录(OI)

2019.9.19 Luogu P5431 【模板】乘法逆元2 假的模板题,,通分以后直接$O(n)$计算 Luogu P5091 【模板】欧拉定理 拓展欧拉定理,直接套公式。 当$b>=\phi(p)$时,有:$a^b≡a^{b\ mod\ \phi(p) \ + \ \phi(p)}\ (mod\ p)$ LuoguP5236 【模板】静态仙人掌 可以说是圆...

weixin_30839881的博客 189

算法竞赛中的数学 习题集1451-1460(10题)

算法竞赛中的数学 习题集1451-1460(10题)

青少年趣味编程 984

【Luogu_P5431】【模板】乘法逆元 2【数论】

数论+乘法逆元

ha 276

P5431 乘法逆元2(逆元)

题目传送门 时限: 550ms 思路: 按照这题数据范围,我们一个一个去求a[i]的逆元,nlogp,对于这个时间显然不够,所以我们要换个方向思考。我们发现我们可以直接通分,分母直接变成了a[1]*a[2]*a[3]*a[4]…*a[n], 然后上面就是(i∈[1,n]) ki * a[1] * … * a[i-1] * a[i+1] * …* a[n],然后一开始预处理一下后缀乘积就行,最后算一个逆元就行。 #include<bits/stdc++.h> #pragma GCC optim

Joker_He的博客 439
上一篇: 【洛谷P5091】【模板】欧拉定理【扩展欧拉定理】
下一篇: 【洛谷P4139】上帝与集合的正确用法【扩展欧拉定理】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值