数学--数论--广义欧拉降幂(模板)
未使用欧拉筛:
适用于较少次数计算的欧拉降幂。
#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;
}
使用线性筛优化的,因为数组限制不能开太大,所以MOD须小于1e8
#include <bits/stdc++.h>
#define ll long long
#define maxn 10000000
using namespace std;
bool ok[maxn];
int prime[maxn],phi[maxn],cnt;
ll a,m,b;
void sieve()
{ phi[1]=1;for(ll i=2;i<maxn;++i){if(!ok[i]){prime[cnt++]=i;phi[i]=i-1;}for(int j=0;j<cnt;++j){if(i*prime[j]>=maxn)break;ok[i*prime[j]]=1;if(i%prime[j]==0){phi[i*prime[j]]=phi[i]*prime[j];//prime[j]是i的因子 prime[j]的素因子项包含在i的素因子项里break; }else phi[i*prime[j]]=phi[i]*(prime[j]-1);//prime[j]与i互质 phi[i*prime[j]=phi[i]*phi[prime[j]]}}
}
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 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()
{sieve();scanf("%lld%lld",&a,&m);b=read(phi[m]);printf("%lld\n",fast_pow(a,b,m));return 0;
}
数学--数论--广义欧拉降幂(模板)相关推荐
- 欧拉降幂和广义欧拉降幂
先百度贴个欧拉定理 由此可以得到降幂公式 第一个要求a和p互质,第二个和第三个是广义欧拉降幂,不要求a和p互质,但要求b和的大小关系. 那么有了这个公式先写个题目 bzoj3884 题意:求2^(2^ ...
- 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)
一般大佬会给你证明,而菜鸟会教你怎么使用. 先摆上公式: ab≡{abmodϕ(p)gcd(a,p)=1abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b ...
- The Preliminary Contest for ICPC Asia Nanjing 2019 B. super_log (广义欧拉降幂)
In Complexity theory, some functions are nearly O(1)O(1), but it is greater then O(1)O(1). For examp ...
- 数学--数论-数论函数-欧拉函数
**欧拉函数定义 对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目.例如euler(8)=4,因为1,3,5,7均和8互质. Euler函数表达通式: 其中p1,p2--pn为x的所有素因数 ...
- 数论学习六之——欧拉定理(欧拉降幂)
我们现在就来学习数论四大定理中的最后一个定理,欧拉定理. 首先我们先介绍一下什么是欧拉函数,欧拉函数 φ ( n ) \varphi(n) φ(n)求的是不超过n且与n互素的正整数的个数,例如: φ ...
- 2019ICPC(南京) - super_log(欧拉降幂)
题目链接:点击查看 题目大意:求(a^a^a^a....^a)%mod,其中有b个a 题目分析:一道数论题,被我们做成了模拟题..首先因为涉及到指数并且指数都还比较大,所以需要知道一个降幂公式: 我们 ...
- 数学--数论--欧拉降幂--P5091 欧拉定理
题目背景 出题人也想写有趣的题面,可惜并没有能力. 题目描述 给你三个正整数,a,m,ba,m,ba,m,b,你需要求:ab mod ma^b \bmod mabmodm 输入格式 一行三个整数,a, ...
- [数学][欧拉降幂定理]Exponial
Exponial 题目 http://exam.upc.edu.cn/problem.php?cid=1512&pid=4 欧拉降幂定理:当b>phi(p)时,有a^b%p = a^(b ...
- 欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)
目录 欧拉函数 欧拉定理 拓展欧拉定理(欧拉降幂) 欧拉函数 在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目. 它的通式如下: φ(n)=n*(1-1/p1)*(1-1/p2)*( ...
最新文章
- McAfee----McAfee 2008 中文版
- JDBC、分层(分包)
- python绘图教程_pyplot绘图教程
- Java之SPI机制
- SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现
- java完全解耦_java-完全解耦
- web server的性能统计
- php 替换所有中文为空,php 匹配替换中文
- jsp分页带条件查询时,点击上一页或下一页,没有按条件查询数据。
- OJ每日一练——细菌个数
- 微信分享开发:准备工作[微信公众平台以及微信中控服务配置](一)
- pytorch to_device遇到数据迁移不成功的问题
- NRF52840 和电脑 进行蓝牙通信
- 前人对ACM学习的一些总结
- 关于光纤收发器的一些基本常识介绍
- 浅谈建筑能耗在线监测系统在天目西路街道103坊27丘项目泰禾大厦的应用—安科瑞 孙斌
- 设置VSCode编辑器、终端字体为微软雅黑Microsoft Yahei,字号大小为11像素
- 高维数组matlab,MATLAB 高维数组
- 景联文科技:深度了解语音识别之发音词典及语音数据采集标注
- (22)UVM 虚拟类序列(virtual sequence)