未使用欧拉筛:

适用于较少次数计算的欧拉降幂。

#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;
}

数学--数论--广义欧拉降幂(模板)相关推荐

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

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

  2. 数学--数论--欧拉降幂和广义欧拉降幂(实用好理解)

    一般大佬会给你证明,而菜鸟会教你怎么使用. 先摆上公式: ab≡{abmodϕ(p)gcd(a,p)=1abgcd(a,p)≠1,b<ϕ(p)abmodϕ(p)+ϕ(p)gcd(a,p)≠1,b ...

  3. 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 ...

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

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

  5. 数论学习六之——欧拉定理(欧拉降幂)

    我们现在就来学习数论四大定理中的最后一个定理,欧拉定理. 首先我们先介绍一下什么是欧拉函数,欧拉函数 φ ( n ) \varphi(n) φ(n)求的是不超过n且与n互素的正整数的个数,例如: φ ...

  6. 2019ICPC(南京) - super_log(欧拉降幂)

    题目链接:点击查看 题目大意:求(a^a^a^a....^a)%mod,其中有b个a 题目分析:一道数论题,被我们做成了模拟题..首先因为涉及到指数并且指数都还比较大,所以需要知道一个降幂公式: 我们 ...

  7. 数学--数论--欧拉降幂--P5091 欧拉定理

    题目背景 出题人也想写有趣的题面,可惜并没有能力. 题目描述 给你三个正整数,a,m,ba,m,ba,m,b,你需要求:ab mod ma^b \bmod mabmodm 输入格式 一行三个整数,a, ...

  8. [数学][欧拉降幂定理]Exponial

    Exponial 题目 http://exam.upc.edu.cn/problem.php?cid=1512&pid=4 欧拉降幂定理:当b>phi(p)时,有a^b%p = a^(b ...

  9. 欧拉函数+欧拉定理+拓展欧拉定理(欧拉降幂)

    目录 欧拉函数 欧拉定理 拓展欧拉定理(欧拉降幂) 欧拉函数 在数论中,有正整数n,欧拉函数是小于n的正整数中与n互质的数的数目. 它的通式如下: φ(n)=n*(1-1/p1)*(1-1/p2)*( ...

最新文章

  1. McAfee----McAfee 2008 中文版
  2. JDBC、分层(分包)
  3. python绘图教程_pyplot绘图教程
  4. Java之SPI机制
  5. SAP Spartacus B2B Org Unit List节点展开的递归逻辑实现
  6. java完全解耦_java-完全解耦
  7. web server的性能统计
  8. php 替换所有中文为空,php 匹配替换中文
  9. jsp分页带条件查询时,点击上一页或下一页,没有按条件查询数据。
  10. OJ每日一练——细菌个数
  11. 微信分享开发:准备工作[微信公众平台以及微信中控服务配置](一)
  12. pytorch to_device遇到数据迁移不成功的问题
  13. NRF52840 和电脑 进行蓝牙通信
  14. 前人对ACM学习的一些总结
  15. 关于光纤收发器的一些基本常识介绍
  16. 浅谈建筑能耗在线监测系统在天目西路街道103坊27丘项目泰禾大厦的应用—安科瑞 孙斌
  17. 设置VSCode编辑器、终端字体为微软雅黑Microsoft Yahei,字号大小为11像素
  18. 高维数组matlab,MATLAB 高维数组
  19. 景联文科技:深度了解语音识别之发音词典及语音数据采集标注
  20. (22)UVM 虚拟类序列(virtual sequence)

热门文章

  1. 扒几个 3D 模型备用
  2. C++11保护共享数据的其他方法
  3. Please make sure you have the correct access rights and the repository exists.报错问题
  4. java 7.0下载_Java jre 7.0
  5. mysql模板标签数据库设计_MySQL数据库规范化设计
  6. mailcore -- POP
  7. UILocalNotification详解
  8. axios中POST请求变成OPTIONS处理
  9. Apache优化——日志管理
  10. 前端实现搜索记录功能