[洛谷3934]P3934 Nephren Ruq Insania题解
先放个奈芙莲

解法
看到这种题目就知道是欧拉降幂,然后根据某玄学证明,递归欧拉降幂从l到r不会超过\(\Theta(log_n)\),所以直接递归解决,然后区间修改直接树状数组维护一下
然后就A了
代码
#include <cstdio>
namespace FenTree{
#define lowbit(x) (x&(-x))
#define MAXN 500005
#define ll long long
ll BIT[MAXN]; int n;
void add(int pos, int val){
for (; pos <= n; pos += lowbit(pos)) BIT[pos] += val;
}
ll query(int pos){
ll sum = 0;
for (; pos; pos -= lowbit(pos)) sum += BIT[pos];
return sum;
}
void addsec(int l, int r, int val){
add(l, val);
if (r < n) add(r + 1, -val);
}
#undef ll
#undef MAXN
#undef lowbit
};
namespace IO{
#define ll long long
inline ll read(){
ll x = 0; int zf = 1; char ch = ' ';
while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
if (ch == '-') zf = -1, ch = getchar();
while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); return x * zf;
}
#undef ll
};
namespace Qpow{
#define ll long long
ll pow(ll a, ll b, ll mod){
if (!a) return 0;
ll ans = 1;
for ( ; b; b >>= 1, a = (a * a) % mod)
if (b & 1)
ans *= a, ans %= mod;
return ans;
}
ll elrPow(ll x, ll y, ll mod){
ll res = 1; bool flgres = 0, flgx = 0;
for ( ; y; y >>= 1){
if (y & 1){
res *= x, flgres = flgx;
if (res >= mod) res %= mod, flgres = 1;
}
if (x >= mod)flgx = 1, x %= mod;
x *= x;
if (x >= mod)flgx = 1, x %= mod;
}
return flgres ? (res + mod) : res;
}
#undef ll
}
int phi[20000005];
int primes[20000005], pcnt;
bool isnp[20000005];
void getPhi(int num){
phi[1] = 1;
for (int i = 2; i <= num; ++i){
if (!isnp[i]) primes[++pcnt] = i, phi[i] = i - 1;
for (int j = 1; j <= pcnt && i * primes[j] <= num; ++j){
isnp[i * primes[j]] = 1;
if (!(i % primes[j])){phi[i * primes[j]] = phi[i] * primes[j]; break;}
phi[i * primes[j]] = phi[i] * (primes[j] - 1);
}
}
}
int a[500005];
long long solve(int l, int r, long long p){
if (p == 1 || l > r) return 1;
long long x = FenTree::query(l) + a[l];
return Qpow::elrPow(x, solve(l + 1, r, phi[p]), p);
}
int main(){
getPhi(20000000);
int n = IO::read(), m = IO::read(); FenTree::n = n;
for (int i = 1; i <= n; ++i) a[i] = IO::read();
int op, l, r; long long val;
for (int i = 1; i <= m; ++i){
op = IO::read(), l = IO::read(), r = IO::read(), val = IO::read();
if (op == 1) FenTree::addsec(l, r, val);
else printf("%lld\n", solve(l, r, val) % val);
}
return 0;
}
[洛谷3934]P3934 Nephren Ruq Insania题解的更多相关文章
- 洛谷3934:Nephren Ruq Insania——题解
https://www.luogu.org/problemnew/show/P3934 题面自己读吧(滑稽. 看到这道题就能够想到BZOJ4869:[SHOI2017]相逢是问候我们曾经用过的哲学扩展 ...
- [洛谷P4118][Ynoi2016]炸脖龙I([洛谷P3934]Nephren Ruq Insania)
题目大意:有$n$个数,每个数为$s_i$,两个操作: $1\;l\;r\;x:$表示将区间$[l,r]$内的数加上$x$ $2\;l\;r\;p:$表示求$s_l^{s_{l+1}^{^{s_{l+ ...
- 洛谷P1854 花店橱窗布置 分析+题解代码
洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...
- HAOI2006 (洛谷P2341)受欢迎的牛 题解
HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...
- 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...
- 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...
- BZOJ4946 & 洛谷3826 & UOJ318:[NOI2017]蔬菜——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4946 https://www.luogu.org/problemnew/show/P3826 ht ...
- 洛谷1578:[WC2002]奶牛浴场——题解
https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...
- 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)
科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...
随机推荐
- 第十届山东省acm省赛补题(2)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second ...
- [LeetCode] 1092. Shortest Common Supersequence
LeetCode刷题记录 传送门 Description Given two strings str1 and str2, return the shortest string that has bo ...
- java基础/数据加解密(Mooc)
一.消息摘要算法 常用摘要算法: 以下 (HEX)内容:bc指Bouncy Castle | cc指:Apache commons Codec 1.消息摘要算法MD5及MD族(MD2,MD4) 消 ...
- [Python3] 002 Python3 中常用的命名规则
目录 1. 什么可以用来命名? 1.1 老三样: 字母.数字.下划线 1.2 其他 2. 什么不能用来命名? Python3 中的"关键字" 3. 命名"小贴士" ...
- mysql中的范式
范式 范式:Normal Format,是一种离散数学中的知识,是为了解决数据的存储与优化的问题:保存数据的存储之后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数据的冗余.范 ...
- java面向对象详细全面介绍
一.面向对象 1.面向过程与面向对象 POP与OOP都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做.面向对象,将功能封装进对象,强调具备了功能的 ...
- SpringMVC框架 课程笔记
SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...
- java基础笔记(7)
Socket编程 通信基础:ip地址(位置).协议(语言).端口(软件程序): java提供网络功能的四大类: InetAddress没有构造函数,不够里面有一些方法是可以返回实例,如: InetAd ...
- Java编程思想学习录(连载之:内部类)
内部类基本概念 可将一个类的定义置于另一个类定义的内部 内部类允许将逻辑相关的类组织在一起,并控制位于内部的类的可见性 甚至可将内部类定义于一个方法或者任意作用域内! 当然,内部类 ≠ 组合 内部类拥 ...
- C++类中的函数重载
1,本课程最初阶段就学习了函数重载,但是那时研究目标仅限于全局函数,到目前 为止我们学习了三种函数: 1,全局函数: 2,普通成员函数: 3,静态成员函数: 这三种不同类型的函数之间是否可以构成重载, ...