Power Tower

CodeForces - 906D

题目大意:有N个数字,然后给你q个区间,要你求每一个区间中所有的数字从左到右依次垒起来的次方的幂对m取模之后的数字是多少。

用到一个新知识,欧拉降幂定理

记住公式 $\LARGE n^x \equiv n^{\varphi(m)\ +\ x\ mod\ \varphi(m)}(mod\ m)​$这个式子当且仅当x>φ(m)时满足。那么就可以递归求解了。

暂时不太明白怎么证明

#include<iostream>
#include<cstdio>
#include<cstring>
#include<map>
#define maxn 100010
#define Mod(a,b) a<b?a:a%b+b
using namespace std;
long long n,m,a[maxn];
map<long long,long long>p;
long long qread(){
long long i=,j=;
char ch=getchar();
while(ch<''||ch>''){if(ch=='-')j=-;ch=getchar();}
while(ch<=''&&ch>='')i=i*+ch-'',ch=getchar();
return i*j;
}
long long Pow(long long x,long long y,long long mod){
long long res=;
while(y){
if(y&)res=Mod(res*x,mod);
x=Mod(x*x,mod);
y>>=;
}
return res;
}
long long phi(long long k){
long long s=k,x=k;
if(p[k])return p[k];
for(long long i=;i*i<=k;i++){
if(k%i==)s=s/i*(i-);
while(k%i==)k/=i;
}
if(k>)s=s/k*(k-);
p[x]=s;return s;
}
long long solve(int l,int r,long long mod){
if(l==r||mod==)return Mod(a[l],mod);
return Pow(a[l],solve(l+,r,phi(mod)),mod);
}
int main(){
freopen("Cola.txt","r",stdin);
n=qread();m=qread();
for(int i=;i<=n;i++)a[i]=qread();
int Q;scanf("%d",&Q);
int l,r;
while(Q--){
scanf("%d%d",&l,&r);
cout<<solve(l,r,m)%m<<endl;
}
return ;
}



最新文章

  1. C#中那些[举手之劳]的性能优化
  2. 关于GUID的相关知识
  3. Quant面试准备5本书
  4. css/js online online code editor/formator/debuger
  5. 基于 canvas 将图片转化成字符画
  6. qemu cow镜像分析
  7. Uber在华从沸点到冰点 搞定这些才能继续走下去
  8. Python: 在Unicode和普通字符串之间转换
  9. ASP.NET WebForm 的路由
  10. GIL(全局解释器锁)
  11. 如何在云端部署SAP HANA实战, Azure 上的 SAP HANA(大型实例)概述和体系结构
  12. SpringBoot导入excle文件数据
  13. Linux数据库:MYSQL启用和查看二进制日志
  14. mysql max_allowed_packet参数值改大后,莫名被还原
  15. angular -- ng-ui-route路由及其传递参数?page页面版
  16. 如何连接并处理 sdf 数据库文件(便捷数据库处理)
  17. PHP中计算字符串相似度的函数代码
  18. hdu 1257 最少拦截系统【贪心 || DP——LIS】
  19. spring入门(五) spring mvc+hibernate
  20. MySQL学习路线图

热门文章

  1. hdu 1864 最大报销额(01背包)
  2. http接口测试框架-构想图
  3. QWidget上下文菜单处理函数
  4. hdu-1025 Constructing Roads In JGShining&#39;s Kingdom(二分查找)
  5. JAVA中的优化技巧(适用Android)
  6. BZOJ5314: [Jsoi2018]潜入行动
  7. BZOJ1217:[HNOI2003]消防局的设立
  8. Log Structured Merge Trees(LSM) 原理
  9. Spring 3.1新特性之四:p命名空间设置注入(待补充)
  10. JavaScript之JMap