洛谷 P3747 [六省联考 2017] 相逢是问候

news/2026/1/19 19:33:50/文章来源:https://www.cnblogs.com/ymz0913/p/19431689

题目链接

欧拉降幂最多只会迭代到第 \(k = \text O (\log p)\) 次模数就会变成 \(1\)(证明见这里)。故一个数被操作超过 \(k\) 次就会变为一个定值。

于是用线段树维护出操作还没有满 \(k\) 次的位置,每次暴力修改并计算,均摊下来只有 \(nk\) 次。光速幂可以预处理。

时间复杂度 \(\text O (k \sqrt p + nk \log n + nk ^ 2)\)

#include<cstdio>
#include<cmath>
#define N 50005
#define M 55
using namespace std;int n,m,p,c,k,a[N],mo[M];
int pw[M][N],Pw[M][N];
int mod(long long x,int p) {if(x<p) return x;return x%p+p;
}
int phi(int x) {int res=x;for(int i=2;i<=x/i;i++) if(x%i==0) {res=res/i*(i-1);while(x%i==0) x/=i;}if(x>1) res=res/x*(x-1);return res;
}
int qqpow(int x,int y,int p) {return mod(1ll*pw[p][y&(1<<14)-1]*Pw[p][y>>14],mo[p]);
}
int calc(int x,int p,int d) {if(p>d) return mod(x,mo[p]);return qqpow(x,calc(x,p+1,d),p);
}
struct segment_tree {struct st {int l,r,c,cnt,sum; bool tag;#define l(p) tr[p].l#define r(p) tr[p].r#define c(p) tr[p].c#define cnt(p) tr[p].cnt#define sum(p) tr[p].sum#define tag(p) tr[p].tag} tr[N*4];void update(int p) {sum(p)=(sum(p*2)+sum(p*2+1))%mo[1];tag(p)=tag(p*2)|tag(p*2+1);}void build(int p,int l,int r) {l(p)=l,r(p)=r,tag(p)=1;if(l==r) {c(p)=sum(p)=a[l]; return;}int mid=l+r>>1;build(p*2,l,mid),build(p*2+1,mid+1,r);update(p);}void modify(int p,int l,int r) {if(!tag(p)) return;if(l(p)==r(p)) {cnt(p)++,sum(p)=calc(c(p),1,cnt(p))%mo[1],tag(p)=cnt(p)<k;return;}if(l<=r(p*2)) modify(p*2,l,r);if(r>=l(p*2+1)) modify(p*2+1,l,r);update(p);}int ask(int p,int l,int r) {if(l<=l(p)&&r>=r(p)) return sum(p);if(r<=r(p*2)) return ask(p*2,l,r);if(l>=l(p*2+1)) return ask(p*2+1,l,r);return (ask(p*2,l,r)+ask(p*2+1,l,r))%mo[1];}
} t1;
int main() {scanf("%d%d%d%d",&n,&m,&p,&c);for(int i=1;i<=n;i++) scanf("%d",&a[i]);while(p>1) mo[++k]=p,p=phi(p);mo[++k]=p;for(int i=1;i<=k;i++) {int w=1;for(int j=0;j<1<<14;j++) pw[i][j]=w,w=mod(1ll*w*c,mo[i]);int cc=w; w=1;for(int j=0;j<1<<14;j++) Pw[i][j]=w,w=mod(1ll*w*cc,mo[i]);}mo[k+1]=1,t1.build(1,1,n);for(int i=1,op,x,y;i<=m;i++) {scanf("%d%d%d",&op,&x,&y);if(!op) t1.modify(1,x,y);else printf("%d\n",t1.ask(1,x,y));}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1184687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gemini 336L - 调试记录(Ubuntu 24.04)

按照Readme安装ROS2 SDK:https://github.com/orbbec/OrbbecSDK_ROS2/tree/v2-main开启ROS2自动补全:eval "$(register-python-argcomplete ros2)" eval "$(register-python-argcomplete colcon)"…

电缆敷设施工机械-哪个品牌的电缆输送机好用

哪个品牌的电缆输送机好用&#xff1f;在电力、通信等基建工程中&#xff0c;电缆输送机的品牌选择&#xff0c;远不止于比较单一参数。这本质上是对设备背后技术可靠性、工程适配性与长期服务价值的综合考量。一个优秀的品牌&#xff0c;意味着其产品能深度融入多样化的施工场…

深入解析:从C++开始的编程生活(16)——继承

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

13.6B参数铸就“世界模型”,美团LongCat-Video搭建5分钟原生视频生成,定义AI视频新标杆

13.6B参数铸就“世界模型”,美团LongCat-Video搭建5分钟原生视频生成,定义AI视频新标杆pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importan…

NodeJS生产环境发布流程

NodeJS生产环境发布流程1、创建宝塔的容器时,先把命令设置为sleep infinity,使用npm将依赖安装完后再改为node /app/server.js2,如果.env不生效,则直接在容器的环境变量里设置3、容器数据库里的端口应该设置为3306…

怎样免费在线把 HEIC 转为 JPG?无需安装软件,也不用上传照片

如果你用 iPhone 拍照,可能已经注意到一个新格式:HEIC。它画质高、文件小,而且在苹果设备上支持良好。但在日常使用中,你可能会遇到不少麻烦。1️⃣ HEIC 的最大问题:兼容性不足 虽然 HEIC 技术先进,但在非苹果环…

2026年趋势全景图:AI重塑技术与翻译行业,这些变化你必须知道!

哈喽,大家好!2026年已至,最近不少机构都发布了年度趋势报告——从IBM聚焦的企业战略,到CSA Research关注的翻译行业,再到BOL News、CSDN拆解的技术革新,每一份报告都在告诉我们:这一年,“不确定性”会是常态,但“机遇”也藏在每一个变革节点里。 今天这篇博客,我就整…

人工智能标注工程师证书:超越标注之框,赋能技能跃迁

在人工智能迅速发展的今天&#xff0c;标注工程师这个职业角色正在悄然发生转变。曾经&#xff0c;我们被称为“数据标注师”&#xff0c;任务是机械地画框、分类、打标签。但人工智能的出现&#xff0c;推动标注工程师职业发生深刻的变化&#xff0c;因此&#xff0c;这也为我…

考完PMP这几件事一定要做!

各位刚查到 PMP 成绩的小伙伴们&#xff0c;恭喜大家顺利通关呀&#xff01;学长知道你们现在肯定又激动又迷茫&#xff0c;拿到证书只是第一步&#xff0c;怎么让它真正成为职业路上的 “硬通货” 才是关键&#xff5e; 2026 年各地政策福利又升级了&#xff0c;这 4 件事抓紧…

竞品关键词实战指南:从挖掘到落地,抢占搜索流量高地

在当今的数字营销领域&#xff0c;搜索流量是品牌获取曝光、转化客户的核心阵地之一。而竞品关键词&#xff0c;作为已经在市场中被验证有效的搜索术语&#xff0c;就像一把打开流量宝库的钥匙。它们不仅能帮助我们洞悉用户需求、发现内容漏洞&#xff0c;更能让我们在自然搜索…

应届生找工作选Java后端方向!未来发展路线该如何走?未来职业发展怎么走?

&#xfeff;应届生找工作选Java后端方向&#xff01;未来发展路线该如何走?未来职业发展怎么走&#xff1f; 应届生选择Java后端方向是个明智的选择&#xff01;以下是我为你梳理的清晰发展路线&#xff0c;分阶段帮你规划职业成长&#xff1a; 一、入门阶段&#xff08;0-2…

深入解析Excel数组:从基础概念到高阶应用的完全指南

数组是Excel函数进阶的钥匙&#xff0c;掌握数组运算逻辑能让你的数据处理能力提升一个维度。 一、理解数组&#xff1a;Excel中的“数据容器” 数组是Excel中最强大的概念之一&#xff0c;它允许你将多个值作为一个整体来处理。本质上&#xff0c;数组就是一个有序的数据集合…

参考文献怎么找:高效查找参考文献的实用方法与技巧

做科研的第一道坎&#xff0c;往往不是做实验&#xff0c;也不是写论文&#xff0c;而是——找文献。 很多新手科研小白会陷入一个怪圈&#xff1a;在知网、Google Scholar 上不断换关键词&#xff0c;结果要么信息过载&#xff0c;要么完全抓不到重点。今天分享几个长期使用的…

不足4个百分点!华为智驾“逼近”英伟达

智驾计算平台之争&#xff0c;进入白热化阶段。一方面&#xff0c;没有自研芯片的辅助驾驶方案提供商尝试打通市场主流计算平台&#xff0c;从而满足不同车企的需求&#xff1b;另一方面&#xff0c;以自研芯片算法打造全栈方案的玩家&#xff0c;也在争夺市场主动权。去年底&a…

Java程序员如何突击即将来临的春招?该做哪些技术储备? - 教程

Java程序员如何突击即将来临的春招?该做哪些技术储备? - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

数据(数据分析与大数据开发)的地位与作用?

数据&#xff08;数据分析与大数据开发&#xff09;的地位与作用&#xff1f; 数据分析与大数据开发的地位与作用 1. 核心地位 数据分析与大数据开发已成为现代社会的基础设施级技术&#xff0c;其地位体现在&#xff1a; 决策支持&#xff1a;为政府、企业提供基于数据的决…

连续3个月破10万!华为乾崑今年目标300万台

高工智能汽车研究院发布最新报告显示&#xff0c;今年1-11月&#xff0c;中国市场&#xff08;不含进出口&#xff09;乘用车前装标配NOA&#xff08;含高速、城区&#xff09;交付新车499.57万辆&#xff0c;同比大幅增长171.09%&#xff0c;前装搭载率提升至24.13%。其中&…

温州精密机械工厂10个SolidWorks设计画图共享一套SolidWorks

在温州精密机械制造行业&#xff0c;SolidWorks作为主流三维设计软件的高效应用直接关系到企业研发效率与市场竞争力。针对中小型精密机械工厂普遍面临的"10人设计团队共享一套SolidWorks"的资源配置难题&#xff0c;需要从技术实现、流程优化到管理策略进行系统性解…

UI-TARS-desktop实战:用自然语言轻松操控电脑任务

UI-TARS-desktop实战&#xff1a;用自然语言轻松操控电脑任务 1. 引言&#xff1a;从命令行到自然语言的交互革命 随着人工智能技术的发展&#xff0c;人机交互方式正在经历深刻变革。传统的图形用户界面&#xff08;GUI&#xff09;操作依赖鼠标与键盘的精确控制&#xff0c…

学术搜索引擎:高效获取学术资源的必备工具与使用指南

做科研的第一道坎&#xff0c;往往不是做实验&#xff0c;也不是写论文&#xff0c;而是——找文献。 很多新手科研小白会陷入一个怪圈&#xff1a;在知网、Google Scholar 上不断换关键词&#xff0c;结果要么信息过载&#xff0c;要么完全抓不到重点。今天分享几个长期使用的…