题目链接  Power Tower

题意  给定一个序列,每次给定$l, r$

   求$w_{l}^{w_{l+1}^{w_{l+2}^{...^{w_{r}}}}}$  对m取模的值

根据这个公式

每次递归计算。

因为欧拉函数不断迭代,下降到$1$的级别大概是$log(m)$的,那么对于每一次询问最多需要递归$log(m)$次

注意每次求解欧拉函数的时候要用map存下来,方便以后查询

#include <bits/stdc++.h>

using namespace std;

#define rep(i, a, b)	for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i) typedef long long LL; const int N = 1e5 + 10; int n, q;
LL a[N];
LL m;
map <LL, LL> f; LL phi(LL n){
if (f.count(n)) return f[n];
LL ans = n, z = n;
for (LL i = 2; i * i <= n; ++i){
if (n % i == 0){
ans -= ans / i;
while (n % i == 0) n /= i;
}
} if (n > 1) ans -= ans / n;
return f[z] = ans;
} LL Pow(LL a, LL b, LL mod){
LL ret = 1;
LL fl = a >= mod;
for (; b; b >>= 1){
if (b & 1){
ret *= a;
if (ret >= mod) fl = 1, ret %= mod;
} a *= a;
if (a >= mod) a %= mod, fl = 1;
} return ret + fl * mod;
} LL solve(int l, int r, LL mod){
if (l == r) return a[l];
if (mod == 1) return 1;
return Pow(a[l], solve(l + 1, r, phi(mod)), mod);
} int main(){ scanf("%d%lld", &n, &m);
rep(i, 1, n) scanf("%lld", a + i); scanf("%d", &q);
while (q--){
int x, y;
scanf("%d%d", &x, &y);
printf("%lld\n", solve(x, y, m) % m);
} return 0;
}

  

最新文章

  1. 基于SSM的租赁管理系统0.3_20161225_数据库设计
  2. Java 高精度数字
  3. yii和wp做博客
  4. win8 IIS
  5. 重新想象 Windows 8.1 Store Apps (84) - 图像处理的新特性, Share Contract 的新特性
  6. (Struts)ActionForm类及表单数据验证
  7. Visual Studio 2010 单元测试
  8. CleanAOP实战系列--WPF中MVVM自动更新
  9. Percona Xtrabackup备份mysql(转)
  10. Chapter 4. Using the Gradle Command-Line 使用gradle命令行
  11. AJAX 表单提交 文件上传
  12. 六:Ioc和AOP使用拓展
  13. logback日志模板
  14. C++——list中erase和remove的区别
  15. (后端)异常不仅仅是try/catch
  16. Python中Gradient Boosting Machine(GBM)调参方法详解
  17. 3.C#知识点:is和as
  18. js省市级联实现
  19. 内存管理 初始化(八) 至kswapd_init
  20. 数据库 -- Oracle常用命令

热门文章

  1. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决
  2. C#编程:正则表达式验证身份证校验码-10
  3. luogu2870 [USACO07DEC]最佳牛线,黄金Best Cow Line, Gold
  4. tomcat内存泄漏存入dump文件
  5. Careercup - Microsoft面试题 - 24313662
  6. 从零开始到设计Python+Selenium自动化测试框架-如何开始
  7. Vue+Django REST framework打造生鲜电商项目
  8. springcloud 高可用分布式配置中心
  9. maven学习(十)——maven生命周期以及插件
  10. PAT1023