luogu P3934 [Ynoi2016] 炸脖龙 I
https://www.luogu.com.cn/problem/P3934
知道几个性质就能做了
- 拓展欧拉定理acmodp=acmodϕ(p)+[c≥ϕ(p)]∗ϕ(p)\large a^c\mod p=a^{c \mod \phi(p)+[c\ge\phi(p)]*\phi(p)}acmodp=acmodϕ(p)+[c≥ϕ(p)]∗ϕ(p)
- ϕ(x)\phi(x)ϕ(x)嵌套大概log次会变成1(考虑奇数变成偶数,偶数除2)
然后这题那个树状数组维护一下区间加就行了
code:
#include<bits/stdc++.h>
#define N 20000050
#define ll long long
using namespace std;
int prime[N], vis[N], phi[N], tot;
void getphi(int n) {phi[1] = 1;for(int i = 2; i <= n; i ++) {if(!vis[i]) {prime[++ tot] = i;phi[i] = i - 1;}for(int j = 1; j <= tot && i * prime[j] <= n; j ++) {vis[i * prime[j]] = 1;if(i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}phi[i * prime[j]] = phi[i] * phi[prime[j]];}}
}ll t[N];
int n;
#define lowbit(x) (x & -x)
void update(int x, int y) {for(; x <= n; x += lowbit(x)) t[x] += y;
}
ll query(int x) {ll ret = 0;for(; x; x -= lowbit(x)) ret += t[x];return ret;
}int f;
ll qpow(ll x, ll y, int p) {f = 0;ll ret = 1;for( ; y ; ) {if(x >= p) f = 1, x %= p;if(y & 1) {ret = ret * x;if(ret >= p) f = 1, ret %= p;}y >>= 1;x = x * x;}return ret;
}
int m, a[N], b[N];
int main() {getphi(N - 45);scanf("%d%d", &n, &m);for(int i = 1; i <= n; i ++) scanf("%d", &a[i]), update(i, a[i] - a[i - 1]);while(m --) {int o, x, y, z;scanf("%d%d%d%d", &o, &x, &y, &z);if(o == 1) update(x, z), update(y + 1, - z);else {int pos = x, p = z;b[pos] = z; p = phi[p];while(p > 1 && pos < y) {b[++ pos] = p;p = phi[p];}// for(int i = x; i <= pos; i ++) printf(" %d ", b[i]); printf(" %d\n", query(x));ll ans = 1;for(int i = pos; i >= x; i --) {ans = qpow(query(i), ans, b[i]);if(f) ans += b[i];}printf("%lld\n", ans % z);}}return 0;
}
luogu P3934 [Ynoi2016] 炸脖龙 I相关推荐
- BZOJ 5394 [Ynoi2016]炸脖龙 (线段树+拓展欧拉定理)
题目大意:给你一个序列,需要支持区间修改,以及查询一段区间$a_{i}^{a_{i+1}^{a_{i+2}...}}mod\;p$的值,每次询问的$p$的值不同 对于区间修改,由线段树完成,没什么好说 ...
- 解题报告:luogu P1688 新单词接龙问题【trie树、dfs、DP递推】
单词的变化有三种:1删掉一个字母,2:插入一个字符,3:将一个字符变成另外一个字符 dig→fig→fin→fine→winedig→fig→fin→fine→winedig→fig→fin→fine ...
- 2018十二月刷题列表
Preface \(2018\)年的尾巴,不禁感慨自己这一年的蜕变只能用蜕变来形容了. 而且老叶说我们今年没的参加清北冬令营可以参加CCF在广州二中举办的冬令营,只要联赛\(390+\)就应该可以报. ...
- 【权游相关】龙的简史 | 混乱博物馆
世界上有讲不完的龙的故事,在欧洲,巨龙总是与骑士和公主联系起来.他们遥远地根植于古希腊和北欧的神话中,然而巨龙成为今天这幅双翼避日.口吐烈火的冷血形象,却是很晚近的事情. 本期混乱博物馆将带给你欧洲巨 ...
- 【学习笔记】线段树详解(全)
[学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...
- 2019年二月刷题列表
Preface 虽然二月剩下没多少了,但是为了勉强保持格式还是写一写吧 这个月的首要目标就是在剩下的时间里让这个月的做题数争取达到\(50\),不过感觉希望渺茫啊 初三中考百天倒计时要来了,所以为此我 ...
- Luogu 1019 单词接龙
题目链接:https://www.luogu.org/problemnew/show/P1019 思路: 审题很重要. 题中有一些要注意的点: 1.每个单词都最多在"龙"中出现两次 ...
- 11粘土人脖卡面撑怎么用_纽约春节必备小吃!鸭脖、炸串、麻辣烫...送到家门口,放肆撸爽!...
人生就像啃鸭脖,既要有大块吃肉的快感,也要啃骨唆髓的销魂!坐落在法拉盛的喵喵鸭,主营各类卤味.鸭货鸡爪猪耳朵,牛腱藕片猪蹄子一应具全.最值得一提的就是鸭脖了.味道鲜美无比,香.辣.甘.麻.甜.酥,啃光 ...
- luogu P1019 单词接龙 题解
题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...
- 王炸不断,半导体巨头们到底在打什么牌?
作者 | 马超 责编 | 欧阳姝黎 出品 | CSDN博客 头图 | 下载于视觉中国 最近整个半导体行业实在风起云涌,IBM 推出了 2nm 的芯片,苹果春季发布会上搭载 M1 的 iPad Pro ...
最新文章
- 数据库设计准则(第一、第二、第三范式说明)
- 通过超图在网页上加载obj格式3D模型
- CSS多行文字垂直居中的两种方法
- php方法参数,关于PHP方法参数的那一些事
- 我能想到的圆角背景的实现方法
- Codeforces Round #573 (Div. 2)
- 品优影视建站系统1.3.6.5开源绿色版
- 使用STL标准模板库实现的个人通讯录
- 【2020】微软 MCSA,MCSD,MCSE认证于2021年1月31停用,此后您将无法再获得此认证 - GJYJSJGS - 高级云计算架构师
- 求方程式ax2bxc0的根c语言,2019-03-09 C语言学习12-求ax^2+bx+c=0方程的根
- java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
- 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
- 点播系统加服务器加投影加音响,打造真实家庭影院 投影机+音响巧搭配
- 七夕撒狗粮,结婚五周年
- 《深度学习的艺术:知乎采铜自选集》读书笔记
- Home Assistant系列 -- 接入手机摄像头做实时监控和人脸识别
- PhotoMOS输出光电耦合器的概要
- java学习第12天
- 画出有3个节点的树和有3个结点的二叉树的所有不同的形态
- 战舰少女服务器不显示,老玩家告诉你游戏战舰少女连不上网的解决方法
热门文章
- Linux 文本处理工具——sed
- 音乐相册源码php,分享使用JavaScript制作微信音乐相册实例
- 分享: Vue微信浏览器ios音乐自动播放
- STM32F103_study43_The punctual atoms(STM32 Echo experiment based on serial communication )
- 神经网络(二)—— 神经元、Logistic回归模型
- K_MEANS 聚类
- 多想和你拉手跳恰恰恰
- [MATLAB] ks检验 混合von mises分布
- 大二〕一直在寻找 生而为人的意义(转载)
- redis进阶之bigkey和hotkey