\(a ^ n \bmod p\)


\(a, p, n \leq 10^9\)

最普通的二进制拆分

#define LL long long
LL qpow(LL a, LL n, LL p)
{
LL ans = 1;
for (; n; n >>= 1, a = a * a % p)
if (n & 1)
ans = ans * a % p;
return ans % p;
}

\(a, p, n \leq 10^{14}\)

底数变大了,直接做\(a * a\)会爆longlong,需要用类似快速幂的方法做乘法

#define LL long long
LL mul(LL a, LL n, LL p)
{
LL ans = 0;
for (; n; n >>= 1, a = (a << 1) % p)
if (n & 1)
ans = (ans + a) % p;
return ans % p;
}
LL qpow(LL a, LL n, LL p)
{
LL ans = 1;
for (; n; n >>= 1, a = mul(a, a, p))
if (n & 1)
ans = mul(ans, a, p) % p;
return ans % p;
}

\(a, p \leq 10^{14}, \ n \leq 10 ^ {100}\) \((a \perp p)\)

初看数据范围,出题人在搞事情。其实只是用了一个欧拉定理的结论:

\[a^n \equiv a^{n \bmod \varphi(p)} \pmod p\ \ \ (a \perp p)
\]

\(O(\sqrt{p})\)算\(\varphi(p)\),n先读字符串然后按快读的方式处理即可。


\(a, p \leq 10^{14}, \ n \leq 10 ^ {100}\)

\(a, p\)互质的条件去掉了怎么办?当\(n \leq \varphi(p)\)时可以直接算,否则用到以下结论:

\[a^n \equiv a^{n \bmod \varphi(p) + \varphi(p)} \pmod p
\]

noip复习——快速幂的更多相关文章

  1. 51Nod 1046 A^B Mod C(日常复习快速幂)

    1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = ...

  2. 51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)

    1004 n^n的末位数字 题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个整数N,输出 ...

  3. 【数论】 快速幂&&矩阵快速幂

    首先复习快速幂 #include<bits/stdc++.h> using namespace std; long long power(long long a,long long b,l ...

  4. NOIP 2013提高组day 1 T 1转圈游戏 快速幂

    描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从0 到 n-1.最初,第 0 号小伙伴在第 0 号位置,第 1 号小伙伴在第 1 号位置,……,依此类推 ...

  5. 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)

    传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...

  6. 2018.10.19 NOIP训练 桌子(快速幂优化dp)

    传送门 勉强算一道dp好题. 显然第kkk列和第k+nk+nk+n列放的棋子数是相同的. 因此只需要统计出前nnn列的选法数. 对于前mmm%nnn列,一共有(m−1)/n+1(m-1)/n+1(m− ...

  7. 2018.10.19 NOIP模拟 硬币(矩阵快速幂优化dp)

    传送门 不得不说神仙出题人DZYODZYODZYO出的题是真的妙. f[i][j][k]f[i][j][k]f[i][j][k]表示选的硬币最大面值为iii最小面值不小于jjj,总面值为kkk时的选法 ...

  8. 2018.10.09 NOIP模拟 路途(递推+矩阵快速幂优化)

    传送门 签到题.(考试的时候写挂爆0) 令AiA_iAi​表示邻接矩阵的iii次幂. 于是就是求Al+Al+1+...+ArA_l+A_{l+1}+...+A_rAl​+Al+1​+...+Ar​. ...

  9. 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)

    [输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...

随机推荐

  1. 题解 CF1385D 【a-Good String】

    题意 定义:字符串s 为一个c-好串(c 为一个字符)时,必须满足: 当\(|s| = 1\) ,\(s = c\) 当\(|s| > 1\), \(s\) 的左半部分为全为 \(c\),右半部 ...

  2. .Net微服务实战之负载均衡(上)

    系列文章 .Net微服务实战之技术选型篇 .Net微服务实战之技术架构分层篇 .Net微服务实战之DevOps篇 相关源码:https://github.com/SkyChenSky/Sikiro P ...

  3. 盘点 6 个被淘汰的 Java 技术,它们都曾经风光过!

    大家好啊,今天栈长给大家分享下我的开发历程中,我知道的那些被淘汰的技术或者框架,有些我甚至都没有用过,但我知道它曾经风光过. 废话不多说,下面我要开始吹了-- 1.Swing 下面这个是用 swing ...

  4. NCRE-Python考点

    NCRE-Python考点 作者:封亚飞本文不含 文件处理.面向对象程序设计.公共基础.计算生态希望各位可以批评指正Qq 64761294 由于图片上传不方便,需要真题的朋友可以加我的qq找我要pdf ...

  5. linux上安装mysql 5.7.22

    主要步骤可以参照该网址: https://www.cnblogs.com/jxrichar/p/9248480.html 这里记录一下自己遇到的问题 1.在配置 vim /etc/my.cnf 文件的 ...

  6. 金字塔卷积:Pyramidal Convolution

    论文地址:https://arxiv.org/pdf/2006.11538.pdf github:https://github.com/iduta/pyconv 作者认为,当前CNN主要存在两个不足: ...

  7. Eclipse创建Web项目后新建Servlet时报红叉错误 or 导入别人Web项目时报红叉错误 的解决办法

    如图,出现类似红叉错误. 1.在项目名称上点击右键->Build Path->Configure Build Path 2.在弹出来的框中点击Add Library,如图 3.接下来选择U ...

  8. laravel 迁移文件中修改含有enum字段的表报错解决方法

    解决方法: 在迁移文件中up方法最上方加上下面这一行代码即可: Schema::getConnection()->getDoctrineSchemaManager()->getDataba ...

  9. 面试官:如何在Integer类型的ArrayList中同时添加String、Character、Boolean等类型的数据? | Java反射高级应用

    原文链接:原文来自公众号:C you again,欢迎关注! 1.问题描述     "如何在Integer类型的ArrayList中同时添加String.Character.Boolean等 ...

  10. 集合的一些实例的demo实现

    按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 准备牌: 牌可以设计为一个ArrayList,每个字符串为一 ...