4869: [Shoi2017]相逢是问候 题意:一个序列,支持区间\(a_i \leftarrow c^{a_i}\),区间求和.在模p意义下. 类似于开根操作,每次取phi在log次后就不变了. 不互质怎么办? 我才知道, \[ n^x \equiv n^{x \mod \varphi(p)\ +\ \varphi(p)} \pmod p,\ x \ge \varphi(p) \] 不要求互质,只要求\(x \ge \varphi(p)\) 然后就很好做了...线段树维护每个点的操作次数和和…
题意 https://loj.ac/problem/2142 思路 一个数如果要作为指数,那么它不能直接对模数取模,这是常识: 诸如 \(c^{c^{c^{c..}}}\) 的函数递增飞快,不是高精度可以描述的,这也是常识. 所以,此题要用到很多数论知识. 欧拉函数 定义 \(\varphi(n)\) 为 \([1,n]\) 中与 \(n\) 互质的正整数个数(包括 \(1\)). 通式 \(\displaystyle \varphi(n)=n\prod_{p|n}(1-{1\over p})\…
题目链接 BZOJ4869 题解 这题调得我怀疑人生,,结果就是因为某些地方\(sb\)地忘了取模 前置题目:BZOJ3884 扩展欧拉定理: \[c^a \equiv c^{a \mod \varphi(p) + [a \ge p]p} \pmod p\] 我们发现当我们进行\(0\)操作,就相当于在\(a\)底部添加一层\(c\) 当我们进行得足够多的时候,\(\varphi(p)\)就会取到\(1\),从而不再变化 所以每个位置操作次数其实是有限的,为\(O(logp)\)次 为何是\(O…
题目描述 Informatik verbindet dich und mich. 信息将你我连结. B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每一个数ai替换为c^ai,即c的ai次方,其中c是输入的一个常数,也就是执行赋值ai=c^ai1 l r求第l个到第r个数的和,也就是输出:sigma(ai),l<=i<=rai因为这个结果可能会很大,所以你只需要输出结果mod…
P3747 [六省联考2017]相逢是问候 题目描述 \(\text {Informatik verbindet dich und mich.}\) 信息将你我连结. \(B\) 君希望以维护一个长度为 \(n\) 的数组,这个数组的下标为从 \(1\) 到 \(n\) 的正整数. 一共有 \(m\) 个操作,可以分为两种: \(0\) \(l\) \(r\) 表示将第 \(l\) 个到第 \(r\) 个数\(( a_l,a_{l+1},...a_r )\)中的每一个数\(a_i\)替换为 \(…
4869: [Shoi2017]相逢是问候 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1313  Solved: 471[Submit][Status][Discuss] Description Informatikverbindetdichundmich. 信息将你我连结.B君希望以维护一个长度为n的数组,这个数组的下标为从1到n的正整数.一共有m个操作,可以 分为两种:0 l r表示将第l个到第r个数(al,al+1,...,ar)中的每…
原题为2017六省联考的D1T3 给出一个序列,m次操作,模数p和参数c 操作分为两种: 1.将[l,r]区间内的每个数x变为\(c^x\) 2.求[l,r]区间内数的和%p 首先,我们要了解一些数论姿势: 1.扩展欧拉定理 //我们熟知的费马小定理用于p是质数,欧拉定理用于a,p互质,而这道题都不满足这个限制 当\((b>=\phi(p))\)时,\(a^b=a^{b\mod \phi(p) + \phi(p)}\) 2.(其实不算数论姿势)一个数最多经过log此\(\phi\)就会变成1 所…
巨难!!! 去年六省联考唯一的一道黑牌题,我今天一天从早到晚,把它从暴力15分怼到了90分,极端接近正解了. bzoj上A了,但是洛谷和loj上面就不行.伪正解会T,奇奇怪怪的类正解会WA.. 那么,网上的题解多得很,我就不细说了. 着重说一下我的理解感受和坑点. 1.不愧是黑牌题,显得十分的繁杂(并不). 首先要用到扩展欧拉定理,φ(),还有线段树辅助,快速幂,大量奇奇怪怪的小细节.....要人命啊. 2.根据之前那题上帝集合,我们可以得知当一个数被操作很多很多很多很多次之后就不变了,成为一个…
由扩展欧拉定理,a^(a^(a^(……^x)))%p中x作为指数的模数应该是φ(φ(φ(φ(……p)))),而p取log次φ就会变为1,也即每个位置一旦被修改一定次数后就会变为定值.线段树维护区间剩余修改次数的最大值,暴力修改即可. 可以预处理出每个位置进行k次操作后的值.直接计算是log^3的,会被卡常.考虑类似bsgs的分块,将指数拆成<10000和10000m两部分,预处理后即可O(1)查询,避免每次快速幂. 注意当指数<φ(p)不能加φ(p). #include<iostream…
传送门 题解 扩展欧拉定理. 线段树维护,已经全改到底了的节点就不管,不然暴力修改下去. //Achen #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<vector> #include<cstdio> #include<queue> #include<cmath> +; #define Fo…