题目链接:http://codeforces.com/contest/906/problem/D

题意:

  给你n个数,再给你l~r,求%m

题解:

  一开始不会

  后来查到了欧拉降幂定理:

  然后就会了

  这样的话,每次从左往右求ans就变成了不断求n^x%m,依次往右递归即可。

代码

  

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define N 100010
int i,j,k,n,x,y,t,q;
ll a[N],m;
map <ll,ll> f;
ll jisuan(ll n){
if (f.count(n))return f[n];
ll ans = n, z = n;for (ll i = ; i * i <= n; ++i){if (n % i == ){ans -= ans / i;while (n % i == ) n /= i;}}
if (n > ) ans -= ans / n;return f[z] = ans;
}
ll Pow(ll a,ll b,ll mod){
ll ret = ;ll fl = a >= mod;
for (; b; b >>= ){if (b & ){ret *= a;if (ret >= mod) fl = , ret %= mod;}a *= a;if (a >= mod) a %= mod, fl = ;}
return ret + fl * mod;
}
ll solve(int l, int r,ll mod){if (l == r) return a[l];if (mod == ) return ;return Pow(a[l], solve(l + , r, jisuan(mod)), mod);}
int main(){
scanf("%d%lld",&n,&m);
for (int i=;i<=n;++i)scanf("%lld",&a[i]);
scanf("%d",&q);
while (q--){scanf("%d%d",&x,&y);printf("%lld\n",solve(x, y, m)%m);}
return ;
}

codeforces906 D的更多相关文章

随机推荐

  1. 电信3G上网卡自己主动重拨

    须要使用电信3G无线上网卡做一个測试,由于要长时间使用,在使用的过程中老掉线,所以做了一个自己主动重连的批处理,好了,闲话少叙,开工: 先建立一个拨号连接: 001.png watermark/2/t ...

  2. Django Rest Framework源码剖析(七)-----分页

    一.简介 分页对于大多数网站来说是必不可少的,那你使用restful架构时候,你可以从后台获取数据,在前端利用利用框架或自定义分页,这是一种解决方案.当然django rest framework提供 ...

  3. Luogo P2324 [SCOI2005]骑士精神

    所有想练习A*的人都先来敲一下这道题吧. 数据范围即便只有5*5,但朴素的爆搜还是会超时. 因此考虑剪枝. 对于这道题,肯定只要进行最优化剪枝,判断现在走的步数+剩下最少要走的步数,如果大于ans或者 ...

  4. ubuntu下安装搜狗输入法

    1.如果系统中未安装依赖fcitx,libssh2-1,或者依赖fcitx,libssh2-1的版本低的话,则需提前安装或者升级,否则安装输入法时会出错 安装命令 sudo apt-get insta ...

  5. libgdx学习记录13——矩形CD进度条绘制

    利用ShapeRenderer可进行矩形进度条的绘制,多变形的填充等操作. 这是根据角度获取矩形坐标的函数. public Vector2 GetPoint( float x, float y, fl ...

  6. [CERC2017]Intrinsic Interval[scc+线段树优化建图]

    题意 给定一个长度为 \(n\) 的排列,有 \(q\) 次询问,每次询问一个区间 \([l,r]\) ,找到最小的包含 \([l,r]\) 的区间,满足这个区间包含了一段连续的数字. \(n\leq ...

  7. LOJ#2799. 「CCC 2016」生命之环

    题意 给你一个 \(n\) 个 \(\rm 01\) 组成的环,每次操作之后每个位置为1当且仅当他的左右恰好有1个1.输出进行 \(T\) 次操作之后的环. \(n\leq 10^5, T\leq 1 ...

  8. LeetCode Search for a Range (二分查找)

    题意 Given a sorted array of integers, find the starting and ending position of a given target value. ...

  9. Svn 提示错误:previous operation has not finished 解决方案

    svn提交遇到恶心的问题,可能是因为上次cleanup中断后,进入死循环了. 解决方案: 找到你项目的.svn文件,查看是否存在wc.db 网上下载SQLite Expert工具,手动打开wc.db, ...

  10. Configuration Section Designer for VS2017

    Configuration Section Designer是在Visual Studio中设计符合.Net配置体系配置文件和代码的神器.然而,它的源码已经很久不维护了.现在在新的VS2017中无法使 ...