2019南京网络赛 B super_log —— 幂塔函数 广义欧拉降幂

2023-11-02 10:48

本文主要是介绍2019南京网络赛 B super_log —— 幂塔函数 广义欧拉降幂,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:点我啊╭(╯^╰)╮

题目大意:

    求 a a . . . a m o d a^{a^{...^a}} mod aa...amod m m m,共 b b b a a a

解题思路:

    在这里插入图片描述

    注意对于指数取模的时候
    要判断计算指数会不会超过模数
    所以在快速幂里修改一下取模操作即可

     P S : PS: PS 对于 g c d ( a , p ) = 1 gcd(a,p) = 1 gcd(a,p)=1 的情况可以直接套用广义定理

核心:欧拉降幂的运用

#include<bits/stdc++.h>
#define rint register int
#define deb(x) cerr<<#x<<" = "<<(x)<<'\n';
using namespace std;
typedef long long ll;
using pii = pair <ll, ll>;
const int maxn = 1e6 + 10;
int T;ll phi[maxn];
inline void phi_table(ll n) {	//计算1到n的欧拉函数值for(ll i = 2; i <= n; i++) phi[i] = 0;phi[1] = 1;for(ll i = 2; i <= n; i++) {if(!phi[i]) {for(ll j = i; j <= n; j+=i) {if(!phi[j]) phi[j] = j;phi[j] = phi[j] / i * (i - 1);}}}
}ll qpow(ll a, ll b, ll p) {ll ret = 1;while(b) {if(b & 1) ret = ret * a;ret = ret < p ? ret : (ret % p + p);a = a * a;a = a < p ? a : (a % p + p);b >>= 1;}return ret;
}ll dfs(ll k, ll m, ll a){if(m == 1) return 1;if(k == 0) return 1;ll exp = dfs(k-1, phi[m], a);return qpow(a, exp, m);
}int main() {ll a, b, m;scanf("%d", &T);phi_table(1e6 + 5);while(T--) {scanf("%lld%lld%lld", &a, &b, &m);if(m == 1) puts("0");else if(b == 0) puts("1");else if(b == 1) printf("%lld\n", a % m);else {ll ans = dfs(b, m, a);printf("%lld\n", ans % m);}}
}

这篇关于2019南京网络赛 B super_log —— 幂塔函数 广义欧拉降幂的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/330078

相关文章

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

MySQL中REPLACE函数与语句举例详解

《MySQL中REPLACE函数与语句举例详解》在MySQL中REPLACE函数是一个用于处理字符串的强大工具,它的主要功能是替换字符串中的某些子字符串,:本文主要介绍MySQL中REPLACE函... 目录一、REPLACE()函数语法:参数说明:功能说明:示例:二、REPLACE INTO语句语法:参数

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda