当前位置: 首页 > news >正文

洛谷 P5091:【模板】扩展欧拉定理

【题目来源】
https://www.luogu.com.cn/problem/P5091

【题目描述】
给你三个正整数,底数 a,模数 m,次数 b,你需要求:a^b mod m。

【输入格式】
一行三个整数,底数 a,模数 m,次数 b。

【输出格式】
一个整数表示答案。

【输入样例】
998244353 12345 98765472103312450233333333333

【输出样例】
5333

【数据范围】
对于 100% 的数据,1≤a≤
10^9,1≤b≤10^20000000,1≤m≤10^8

【算法分析】
通过字符串解析大指数,并应用欧拉定理降幂,解决大指数的溢出问题

● 扩展欧拉定理: 对于任意整数 a 和模数 n,若 x≥φ(n),则有:a^x=a^{x \mod \phi (n)+\phi (n)} (mod \ n)
这种扩展使得我们能够在 x 非常大的情况下,通过对 x 取模 φ(n) 来简化计算。

● 快读:
https://blog.csdn.net/hnjzsyjyj/article/details/120131534

int read() { //fast readint x=0,f=1;char c=getchar();while(c<'0' || c>'9') { //!isdigit(c)if(c=='-') f=-1;c=getchar();}while(c>='0' && c<='9') { //isdigit(c)x=x*10+c-'0';c=getchar();}return x*f;
}

●​​​​​​​ 快速幂:https://blog.csdn.net/hnjzsyjyj/article/details/143168167

int fastPow(LL a,LL b,LL p) {LL ans=1;while(b) {if(b & 1) ans=ans*a%p;a=a*a%p;b>>=1;}return ans%p;
}

●​​​​​​​ 欧拉函数:https://blog.csdn.net/hnjzsyjyj/article/details/148159326

int oula_phi(int x) {int ans=x;for(int i=2; i*i<=x; i++) {if(x%i==0) {ans=ans/i*(i-1);while(x%i==0) x/=i;}}if(x>1) ans=ans/x*(x-1);return ans;
}

【算法代码】

#include <bits/stdc++.h>
#define int long long
using namespace std;int gcd(int a, int b) {if(b==0) return a;else return gcd(b,a%b);
}int oula_phi(int x) {int ans=x;for(int i=2; i*i<=x; i++) {if(x%i==0) {ans=ans/i*(i-1);while(x%i==0) x/=i;}}if(x>1) ans=ans/x*(x-1);return ans;
}int fastPow(int a,int b,int p) {int ans=1;while(b) {if(b & 1) ans=ans*a%p;a=a*a%p;b>>=1;}return ans%p;
}int parseBigInt(string s,int t) {int ans=0;bool flag=false;for(char c:s) {ans=ans*10+(c-'0');if(ans>=t) {flag=true;ans%=t;}}return flag?ans+t:ans;
}signed main() {int a,m;string b_str;cin>>a>>m>>b_str;if(m==1) {cout<<0<<endl;return 0;}int t=oula_phi(m);int b_mod=parseBigInt(b_str,t);if(gcd(a,m)==1) b_mod%=t;cout<<fastPow(a,b_mod,m)<<endl;return 0;
}/*
in:
998244353 12345 98765472103312450233333333333out:
5333
*/






【参考文献】
https://www.luogu.com.cn/problem/solution/P5091
https://blog.csdn.net/hnjzsyjyj/article/details/143168167
https://blog.csdn.net/hnjzsyjyj/article/details/148159326
https://blog.csdn.net/hnjzsyjyj/article/details/148179867



 

http://www.xdnf.cn/news/674785.html

相关文章:

  • MacOS内存管理-删除冗余系统数据System Data
  • 第六章 文件的其他操作命令
  • 计算机组成原理——CISC与RISC
  • 【基于STM32的新能源汽车智能循迹系统开发全解析】
  • 什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?​
  • 使用java8开发mcp server
  • 让学习回归到技术上来(技术 !=== 死记硬背)
  • name ‘selective_scan_fn‘ is not defined运行出现这个错误
  • 修改 Ubuntu Installer 从串口输出的方法
  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • Qwen2.5-VL视觉-语言模型做图片理解调研
  • 深入解析Spring Boot与Redis的集成实践
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 自动化Web页面性能测试介绍
  • [Java实战]Spring Boot切面编程实现日志记录(三十六)
  • ojs导入显示空白页错误信息
  • C-自定义类型
  • go中的channel
  • 蓝桥杯b组c++赛道---字典树
  • WPF【10_2】数据库与WPF实战-示例
  • 中级统计师-统计学基础知识-第七章 回归分析
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 【IOS】【OC】【应用内打印功能的实现】如何在APP内实现打印功能,连接本地打印机,把想要打印的界面打印成图片
  • 简单网络交换、路由-华三单区域OSPF
  • AGI大模型(34):Advanced RAG之Pre-Retrieval(预检索)优化
  • OpenAI O3惊现算法的自由意识,AGI初现?
  • 在VSTO C#中获取Excel范围内最后一个非空单元格,可以通过以下几种方法实现
  • C标准库函数:字符串操作
  • 【深度学习】7. 深度卷积神经网络架构:从 ILSVRC、LeNet 到 AlexNet、ZFNet、VGGNet,含pytorch代码结构
  • NLP助力非结构化文本抽取:实体关系提取实战