2019 南京网络赛 B super_log 【递归欧拉降幂】
一、题目
二、分析
公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$。
对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理:

用这个定理时,除了$\gcd (a,p) =1$的情况,其他情况主要是保证$a$的指数不为$0$,在写代码的时候也需要注意这点,当然也可以重新定义个快速幂,使其快速幂的结果保证不为$0$,也是可以的的。
三、AC代码
#include <bits/stdc++.h> using namespace std;
#define ll long long
#define Min(a,b) ((a)>(b)?(b):(a))
#define Max(a,b) ((a)>(b)?(a):(b))
#define P pair<int, int> const int MAXN = 1e6+5;
int Phi[MAXN], Prime[MAXN], nPrime; void Euler()
{
memset(Phi, 0, sizeof(Phi));
Phi[1] = 1;
nPrime = 0;
for(int i = 2; i < MAXN; i++)
{
if(!Phi[i]) //i为素数
{
Phi[i] = i - 1;
Prime[nPrime++] = i;
}
for(int j = 0; j < nPrime && (long long)i*Prime[j] < MAXN; j++)
{
if(i%Prime[j])
{ Phi[ i*Prime[j] ] = Phi[i]*(Prime[j]-1);
}
else
{
Phi[ i*Prime[j] ] = Phi[i]*Prime[j];
break;
}
}
}
return;
} ll gcd(ll a, ll b) {return b==0?a:gcd(b,a%b);} ll Pow(ll a, ll b, ll mod)
{
ll ans = 1;
while(b) {
if(b&1) ans = ans*a%mod;
a = a * a % mod;
b>>=1;
}
return ans;
} ll qPow(ll a, ll b, ll mod)
{
ll ans = 1;
while(b) {
if(b&1) ans = (ans * a > mod ? ans * a % mod + mod : ans * a);
a = (a * a > mod ? a * a % mod + mod : a * a);
b>>=1;
}
return ans;
} ll solve(ll a, ll times, ll m)
{
if(m == 1) return 1;
if(times == 0) return 1;
ll res = Phi[m];
ll b = solve(a, times-1, res);
if(gcd(a, m) == 1)
return Pow(a, b%res, m);
else if(b && b < res)
return Pow(a, b, m);
else
return Pow(a, b%res + res, m);
} ll solve2(ll a, ll times, ll m)
{
if(times == 0) return 1;
if(m == 1) return 1;
return qPow(a, solve2(a, times-1, Phi[m]), m);
} int main()
{
freopen("input.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int T;
ll a, b, m;
scanf("%d", &T);
Euler();
while(T--) {
scanf("%lld%lld%lld", &a, &b, &m);
printf("%lld\n", solve2(a, b, m)%m);
// printf("%lld\n", solve(a, b, m)%m);
}
return 0;
}
2019 南京网络赛 B super_log 【递归欧拉降幂】的更多相关文章
- 2019ICPC网赛南京站B题 super_log(欧拉降幂
https://nanti.jisuanke.com/t/41299 题意:让算a^(a^(a^(...))),一共b个a, (mod p)的结果. 思路:这是个幂塔函数,用欧拉降幂公式递归求解. # ...
- 2018 焦作网络赛 G Give Candies ( 欧拉降幂 )
题目链接 题意 : 给出 N 个糖果.老师按顺序给 1~N 编号的学生分配糖果.每个学生要么不分.要么最少分一个.且由于是按顺序发放.那么对于某个有分到糖果的编号为 i 的学生.则 1~(i-1) 这 ...
- 2019 南京网络赛A
南京网络赛自闭现场 https://nanti.jisuanke.com/t/41298 二维偏序经典题型 二维前缀和!!! #include<bits/stdc++.h> using n ...
- 2019ICPC南京网络赛B super_log——扩展欧拉定理
题目 设函数 $$log_a*(x) = \begin{cases}-1, & \text{ if } x < 1 \\ 1+log_a*(log_ax) & \text{ if ...
- 2019ICPC南京网络赛B super_log
题意:求a的a的a次方..一直求b次,也就是在纸上写个a,然后一直a次方a次方,对m取模,记为F(a,b,m)=pow(a,F(a,b-1,phi(m)) 解题思路:联系欧拉降幂,这个迭代的过程,我们 ...
- 牛客OI测试赛 F 子序列 组合数学 欧拉降幂公式模板
链接:https://www.nowcoder.com/acm/contest/181/F来源:牛客网 题目描述 给出一个长度为n的序列,你需要计算出所有长度为k的子序列中,除最大最小数之外所有数的乘 ...
- Robots 2019南京网络赛 (概率dp)
Robots \[ Time Limit: 1000 ms \quad Memory Limit: 262144 kB \] 题意 有一个机器人要从 \(1\) 点走到 \(n\) 点,每走一步都需要 ...
- [2019南京网络赛D题]Robots
题目链接 2019.9.2更新 第二天睡醒想了想发现好像搜一遍就可以过,赛时写的花里胡哨的还错了,太菜了QAQ #include<bits/stdc++.h> using namespac ...
- 2019ICPC南京网络赛B super_log(a的b塔次方)
https://nanti.jisuanke.com/t/41299 分析:题目给出a,b,mod求满足条件的最小a,由题目的式子得,每次只要能递归下去,b就会+1,所以就可以认为b其实是次数,什么的 ...
随机推荐
- 从 MFC 移植程序到 wxWidgets 界面库 ——《定时执行专家 5.0》的界面实现
时隔十年的更新,最大的变化就是从 MFC 移植到 wxWidgets,界面也全部重现设计,图标也都进行了更换.wxWidgets(最新版 3.1.4,经典的开源.跨平台 C++ GUI类库)特有的 ...
- docker的企业级仓库-harbor
Harbor 一.背景 Docker中要使用镜像,我们一般都会从本地.Docker Hub公共仓库或者其它第三方的公共仓库中下载镜像,但是出于安全和一些内外网的原因考虑,企业级上不会轻易使用.普通的D ...
- select函数详细用法解析
1.表头文件 #include #include #include 2.函数原型 int select(int n,fd_set * readfds,fd_set * writefds,fd_set ...
- Linux 驱动框架---input子系统框架
前面从具体(Linux 驱动框架---input子系统)的工作过程学习了Linux的input子系统相关的架构知识,但是前面的学习比较实际缺少总结,所以今天就来总结一下输入子系统的架构分层,站到远处来 ...
- when I was installing github for windows ,some errors occurred !
1: 2: 3: 4: install.log error messages:
- Linked List & List Node All In One
Linked List & List Node All In One 链表 & 节点 链表类型 单链表 双链表 环形链表 / 循环链表 Singly Linked List (Uni- ...
- LeetCode 高效刷题路径
LeetCode 高效刷题路径 Hot 100 https://leetcode.com/problemset/hot-100/ https://leetcode-cn.com/problemset/ ...
- React & Strict Mode
React & Strict Mode https://reactjs.org/docs/strict-mode.html#detecting-unexpected-side-effects ...
- web performance optimise & css
web performance optimise & css 俄罗斯套娃 clients hints https://cloudinary.com/blog/automatic_respons ...
- Masterboxan INC发布《2019年可持续发展报告》
近日,Masterboxan INC万事达资产管理有限公司(公司编号:20151264097)发布<2019年可持续发展报告>,全面回顾了在过去一年Masterboxan INC开展的可持 ...