数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
一般大佬会给你证明,而菜鸟会教你怎么使用。
先摆上公式:
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;
}
题目:
洛谷模板题
数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)相关推荐
- 数学/数论专题:莫比乌斯函数与欧拉函数
数学/数论专题:莫比乌斯函数与欧拉函数(进阶) 0. 前言 1. 前置知识 2. 正文 3. 总结 4. 参考资料 0. 前言 本篇文章会从狄利克雷卷积的角度,讨论莫比乌斯函数与欧拉函数的相关性质. ...
- 欧拉降幂和广义欧拉降幂
先百度贴个欧拉定理 由此可以得到降幂公式 第一个要求a和p互质,第二个和第三个是广义欧拉降幂,不要求a和p互质,但要求b和的大小关系. 那么有了这个公式先写个题目 bzoj3884 题意:求2^(2^ ...
- 数学--数论-数论函数-欧拉函数
**欧拉函数定义 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.例如euler(8)=4,因为1,3,5,7均和8互质. Euler函数表达通式: 其中p1,p2--pn为x的所有素因数 ...
- 数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法
打死没想到会在H老师处学懂数论 同余,整除 模运算 埃式筛法 欧拉筛法 最大公约数和最小公倍数 辗转相除法 更相减损术 裴蜀定理 威尔逊定理 费马定理 同余等价类.剩余系.缩系 欧拉函数 欧拉定理 扩 ...
- 欧拉线性筛 与 欧拉函数 + 几道例题
欧拉线性筛 生成素数表prime[]数组 const int maxn = 1e7+5; int prime[maxn]; int visit[maxn]; void Prime(){memset(v ...
- 【微分方程数值解】常微分方程(一)欧拉方法和改进欧拉方法(附python算例,封装类)
欧拉方法与改进欧拉方法 一.算法原理 对给定微分方程 {y′=f(x,y)y(x0)=y0(1)\begin{cases} y' = f(x,y)\\ y(x_0) = y_0 \end{cases} ...
- 微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉
微分方程一维抛物热传导方程向前向后欧拉C-N格式二阶BDF格式MATLAB源码 显式欧拉,隐式欧拉,梯形公式,改进欧拉 五点差分,九点差分 差分格式,紧差分格式 直拍,只有pdf版方法说明 word版 ...
- 欧若拉用计算机谱子,欧若拉 _谱友园地_中国曲谱网
<欧若拉>文本歌词 欧若拉 作词:施立 作曲:李天龙 演唱:张韶涵 制谱:孙世彦 神秘北极圈 阿拉斯加的山巅, 谁的脸 出现海角的天边? 忽然的瞬间 在那遥远的地点, 我看见 恋人幸福的光 ...
- 数学/数论专题-学习笔记:狄利克雷卷积
数学/数论专题-学习笔记:狄利克雷卷积 1. 前言 2. 一些基础函数 3. 积性函数 4. 狄利克雷卷积 5. 总结 6. 参考资料 1. 前言 狄利克雷卷积,是学习与继续探究 μ\muμ 函数和 ...
最新文章
- iOS中nil Nil NULL 区别
- 软件测试用户故事评审实验报告,软件测试评审题目.doc
- 中国医疗AI第一股首位投资人:AI不再高深,正在回归商业本质
- Netty ObjectPool对象池技术原理分析
- 程序员,你喜欢抽哪种香烟?(python数据分析)
- 大内高手—共享内存与线程局部存储
- Effective java笔记3--类和接口1
- java7和java8切换_仍不切换到Java 8的6个理由
- [vue-cli]vue-cli3你有使用过吗?它和2.x版本有什么区别?
- 为什么我学了6个月Python,还是找不到工作?
- html的课设作业6,第七节课html标签元素属性作业-2019-9-6 作业
- 2021年度移动广告流量观察白皮书
- Struts2学习笔记(七) 结果(Result)(下)
- java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver
- Java中处理日期的常用类
- java私塾跟我学系列_Java私塾跟我学系列——JAVA篇 七、
- 赫兹的单位换算_hz单位换算
- 椭圆曲线的加密算法解析和程序设计—基于python语言
- linux 流量控制 1
- [CSCCTF 2019 Qual]FlaskLight 记录
热门文章
- 查看git当前tag_同学,也该学着用Git了......
- 4月11日 GCD 总结(二)
- Navicat使用教程:使用Navicat Premium 12自动执行数据库复制(四)
- 关于字符集--总结,补遗以及问题
- Hadoop详细配置
- django学习笔记之forloop
- 某公司故障分析案例(实战案例)
- mapreduce分组统计_Mongodb的分组统计MapReduce
- bootstrap 模态框满屏_解决Ueditor在bootstarp 模态框中全屏问题
- 当阳一中2021高考成绩查询,宜昌2021高考最高分多少分,宜昌历年高考状元资料