一般大佬会给你证明,而菜鸟会教你怎么使用。

先摆上公式:

ab≡{abmodϕ(p)gcd(a,p)=1abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b≥ϕ(p)(modp)a^{b} \equiv \begin{cases} a^{bmod\phi (p)} & \text gcd(a,p)=1 \\ a^b & \text gcd(a,p)\neq 1,b<\phi (p)\\ a^{bmod\phi (p)+\phi (p)} & \text gcd(a,p)\neq 1,b\geq \phi (p) \end{cases} \ \ \ \ (modp)ab≡⎩⎪⎨⎪⎧​abmodϕ(p)ababmodϕ(p)+ϕ(p)​gcd(a,p)=1gcd(a,p)​=1,b<ϕ(p)gcd(a,p)​=1,b≥ϕ(p)​    (modp)

欧拉降幂:

ab≡abmodϕ(p)gcd(a,p)=1a^{b} \equiv a^{bmod\phi (p)} \ \ gcd(a,p)=1ab≡abmodϕ(p)  gcd(a,p)=1
适用范围:
当底与取模的数互质,且b较大的时侯,我这句话用不到,直接扩展欧拉降幂就好了,时间复杂度差不了多少。

扩展欧拉定理:

ab≡{abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b≥ϕ(p)(modp)a^{b} \equiv \begin{cases} a^b & \text gcd(a,p)\neq 1,b<\phi (p)\\ a^{bmod\phi (p)+\phi (p)} & \text gcd(a,p)\neq 1,b\geq \phi (p) \end{cases} \ \ \ \ \ (modp)ab≡{ababmodϕ(p)+ϕ(p)​gcd(a,p)​=1,b<ϕ(p)gcd(a,p)​=1,b≥ϕ(p)​     (modp)

总结:

用的时候我们只考虑扩展的就可以了,因为bmodϕ(p)≡bmodϕ(p)+ϕ(p)bmod\phi (p)≡bmod\phi (p)+\phi (p)bmodϕ(p)≡bmodϕ(p)+ϕ(p)

代码:

这个代码的优点是,如果b太大,不能读入的话也是可以处理的。
如果代码需要多次计算的话,可以使用线性筛法,获得欧拉函数的值。

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a,m,b;inline ll read(ll m){register ll x=0,f=0;char ch=getchar();while(!isdigit(ch)) ch=getchar();while(isdigit(ch)){x=x*10+ch-'0';if(x>=m) f=1;x%=m;ch=getchar();}return x+(f==1?m:0);
}ll phi(ll n){ll ans=n,m=sqrt(n);for(ll i=2;i<=m;i++){if(n%i==0){ans=ans/i*(i-1);while(n%i==0) n/=i; }}if(n>1) ans=ans/n*(n-1);return ans;
}ll fast_pow(ll a,ll b,ll p){ll ret=1;for(;b;b>>=1,a=a*a%p)if(b&1) ret=ret*a%p;return ret;
}int main()
{scanf("%lld%lld",&a,&m);b=read(phi(m));printf("%lld\n",fast_pow(a,b,m));return 0;
}

题目:
洛谷模板题

数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)相关推荐

  1. 数学/数论专题:莫比乌斯函数与欧拉函数

    数学/数论专题:莫比乌斯函数与欧拉函数(进阶) 0. 前言 1. 前置知识 2. 正文 3. 总结 4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度,讨论莫比乌斯函数与欧拉函数的相关性质. ...

  2. 欧拉降幂和广义欧拉降幂

    先百度贴个欧拉定理 由此可以得到降幂公式 第一个要求a和p互质,第二个和第三个是广义欧拉降幂,不要求a和p互质,但要求b和的大小关系. 那么有了这个公式先写个题目 bzoj3884 题意:求2^(2^ ...

  3. 数学--数论-数论函数-欧拉函数

    **欧拉函数定义 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.例如euler(8)=4,因为1,3,5,7均和8互质. Euler函数表达通式: 其中p1,p2--pn为x的所有素因数 ...

  4. 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

    打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...

  5. 欧拉线性筛 与 欧拉函数 + 几道例题

    欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...

  6. 【微分方程数值解】常微分方程(一)欧拉方法和改进欧拉方法(附python算例,封装类)

    欧拉方法与改进欧拉方法 一.算法原理 对给定微分方程 {y′=f(x,y)y(x0)=y0(1)\begin{cases} y' = f(x,y)\\ y(x_0) = y_0 \end{cases} ...

  7. 微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉

    微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉 五点差分,九点差分 差分格式,紧差分格式 直拍,只有pdf版方法说明 word版 ...

  8. 欧若拉用计算机谱子,欧若拉 _谱友园地_中国曲谱网

    <欧若拉>文本歌词 欧若拉 作词:施立 作曲:李天龙 演唱:张韶涵 制谱:孙世彦 神秘北极圈 阿拉斯加的山巅, 谁的脸 出现海角的天边? 忽然的瞬间 在那遥远的地点, 我看见 恋人幸福的光 ...

  9. 数学/数论专题-学习笔记:狄利克雷卷积

    数学/数论专题-学习笔记:狄利克雷卷积 1. 前言 2. 一些基础函数 3. 积性函数 4. 狄利克雷卷积 5. 总结 6. 参考资料 1. 前言 狄利克雷卷积,是学习与继续探究 μ\muμ 函数和 ...

最新文章

  1. iOS中nil Nil NULL 区别
  2. 软件测试用户故事评审实验报告,软件测试评审题目.doc
  3. 中国医疗AI第一股首位投资人:AI不再高深,正在回归商业本质
  4. Netty ObjectPool对象池技术原理分析
  5. 程序员,你喜欢抽哪种香烟?(python数据分析)
  6. 大内高手—共享内存与线程局部存储
  7. Effective java笔记3--类和接口1
  8. java7和java8切换_仍不切换到Java 8的6个理由
  9. [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?
  10. 为什么我学了6个月Python,还是找不到工作?
  11. html的课设作业6,第七节课html标签元素属性作业-2019-9-6 作业
  12. 2021年度移动广告流量观察白皮书
  13. Struts2学习笔记(七) 结果(Result)(下)
  14. java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver
  15. Java中处理日期的常用类
  16. java私塾跟我学系列_Java私塾跟我学系列——JAVA篇 七、
  17. 赫兹的单位换算_hz单位换算
  18. 椭圆曲线的加密算法解析和程序设计—基于python语言
  19. linux 流量控制 1
  20. [CSCCTF 2019 Qual]FlaskLight 记录

热门文章

  1. 查看git当前tag_同学,也该学着用Git了......
  2. 4月11日 GCD 总结(二)
  3. Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(四)
  4. 关于字符集--总结,补遗以及问题
  5. Hadoop详细配置
  6. django学习笔记之forloop
  7. 某公司故障分析案例(实战案例)
  8. mapreduce分组统计_Mongodb的分组统计MapReduce
  9. bootstrap 模态框满屏_解决Ueditor在bootstarp 模态框中全屏问题
  10. 当阳一中2021高考成绩查询,宜昌2021高考最高分多少分,宜昌历年高考状元资料