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相关推荐

  1. BZOJ 5394 [Ynoi2016]炸脖龙 (线段树+拓展欧拉定理)

    题目大意:给你一个序列,需要支持区间修改,以及查询一段区间$a_{i}^{a_{i+1}^{a_{i+2}...}}mod\;p$的值,每次询问的$p$的值不同 对于区间修改,由线段树完成,没什么好说 ...

  2. 解题报告:luogu P1688 新单词接龙问题【trie树、dfs、DP递推】

    单词的变化有三种:1删掉一个字母,2:插入一个字符,3:将一个字符变成另外一个字符 dig→fig→fin→fine→winedig→fig→fin→fine→winedig→fig→fin→fine ...

  3. 2018十二月刷题列表

    Preface \(2018\)年的尾巴,不禁感慨自己这一年的蜕变只能用蜕变来形容了. 而且老叶说我们今年没的参加清北冬令营可以参加CCF在广州二中举办的冬令营,只要联赛\(390+\)就应该可以报. ...

  4. 【权游相关】龙的简史 | 混乱博物馆

    世界上有讲不完的龙的故事,在欧洲,巨龙总是与骑士和公主联系起来.他们遥远地根植于古希腊和北欧的神话中,然而巨龙成为今天这幅双翼避日.口吐烈火的冷血形象,却是很晚近的事情. 本期混乱博物馆将带给你欧洲巨 ...

  5. 【学习笔记】线段树详解(全)

    [学习笔记]线段树详解(全) 和三个同学一起搞了接近两个月的线段树,头都要炸了T_T,趁心态尚未凉之前赶快把东西记下来... [目录] [基础]作者:\((Silent\)_\(EAG)\) [懒标记 ...

  6. 2019年二月刷题列表

    Preface 虽然二月剩下没多少了,但是为了勉强保持格式还是写一写吧 这个月的首要目标就是在剩下的时间里让这个月的做题数争取达到\(50\),不过感觉希望渺茫啊 初三中考百天倒计时要来了,所以为此我 ...

  7. Luogu 1019 单词接龙

    题目链接:https://www.luogu.org/problemnew/show/P1019 思路: 审题很重要. 题中有一些要注意的点: 1.每个单词都最多在"龙"中出现两次 ...

  8. 11粘土人脖卡面撑怎么用_纽约春节必备小吃!鸭脖、炸串、麻辣烫...送到家门口,放肆撸爽!...

    人生就像啃鸭脖,既要有大块吃肉的快感,也要啃骨唆髓的销魂!坐落在法拉盛的喵喵鸭,主营各类卤味.鸭货鸡爪猪耳朵,牛腱藕片猪蹄子一应具全.最值得一提的就是鸭脖了.味道鲜美无比,香.辣.甘.麻.甜.酥,啃光 ...

  9. luogu P1019 单词接龙 题解

    题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的"龙"(每个单词都最多在"龙" ...

  10. 王炸不断,半导体巨头们到底在打什么牌?

    作者 | 马超  责编 | 欧阳姝黎 出品 | CSDN博客 头图 | 下载于视觉中国 最近整个半导体行业实在风起云涌,IBM 推出了 2nm 的芯片,苹果春季发布会上搭载 M1 的 iPad Pro ...

最新文章

  1. 数据库设计准则(第一、第二、第三范式说明)
  2. 通过超图在网页上加载obj格式3D模型
  3. CSS多行文字垂直居中的两种方法
  4. php方法参数,关于PHP方法参数的那一些事
  5. 我能想到的圆角背景的实现方法
  6. Codeforces Round #573 (Div. 2)
  7. 品优影视建站系统1.3.6.5开源绿色版
  8. 使用STL标准模板库实现的个人通讯录
  9. 【2020】微软 MCSA,MCSD,MCSE认证于2021年1月31停用,此后您将无法再获得此认证 - GJYJSJGS - 高级云计算架构师
  10. 求方程式ax2bxc0的根c语言,2019-03-09 C语言学习12-求ax^2+bx+c=0方程的根
  11. java邮件发送 qq与163邮箱互发和qq和163邮箱发送其他邮箱实例
  12. 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
  13. 点播系统加服务器加投影加音响,打造真实家庭影院 投影机+音响巧搭配
  14. 七夕撒狗粮,结婚五周年
  15. 《深度学习的艺术:知乎采铜自选集》读书笔记
  16. Home Assistant系列 -- 接入手机摄像头做实时监控和人脸识别
  17. PhotoMOS输出光电耦合器的概要
  18. java学习第12天
  19. 画出有3个节点的树和有3个结点的二叉树的所有不同的形态
  20. 战舰少女服务器不显示,老玩家告诉你游戏战舰少女连不上网的解决方法

热门文章

  1. Linux 文本处理工具——sed
  2. 音乐相册源码php,分享使用JavaScript制作微信音乐相册实例
  3. 分享: Vue微信浏览器ios音乐自动播放
  4. STM32F103_study43_The punctual atoms(STM32 Echo experiment based on serial communication )
  5. 神经网络(二)—— 神经元、Logistic回归模型
  6. K_MEANS 聚类
  7. 多想和你拉手跳恰恰恰
  8. [MATLAB] ks检验 混合von mises分布
  9. 大二〕一直在寻找 生而为人的意义(转载)
  10. redis进阶之bigkey和hotkey