SP10050 POWTOW - Power Tower City 题解
前置知识
解法
本题幂塔是有限层的,这里与 luogu P4139 上帝与集合的正确用法 中的无限层幂塔不同,故需要在到达递归边界 \(n+1\) 时进行特殊处理,对于处理 \(\varphi(p)\) 在递归过程中等于 \(1\) 的情况两题基本一致。
回忆扩展欧拉定理中的 \(b\) 和 \(\varphi(p)\) 的关系,如果我们按照 常规的快速幂写法 会出现问题,即我们无法正确判断 \(a^b\) 在作为下一次运算的指数时和 \(\varphi(p)\) 之间的大小关系,这就需要我们额外在快速幂的过程中判断 \(a^b\) 和 \(\varphi(p)\) 之间的大小关系。
- 在这里可以使用
__int128_t来代替实现高精度的快速幂。
另外由于本题的特殊规定 \(0^0=1\),故需要在当 \(a=0\) 时,对 \(b\) 的奇偶性进行判断。手模几组样例,发现结论挺显然的。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll __int128_t
#define sort stable_sort
#define endl '\n'
ll read()
{
ll x=0,f=1;
char c=getchar();
while(c>'9'||c<'0')
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while('0'<=c&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
ll phi(ll n)
{
ll ans=n,i;
for(i=2;i<=sqrtl(n);i++)//因为使用了__int128_t,为防止CE便使用了sqrtl,亦可以写成i*i<=n的形式
{
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 qpow(ll a,ll b,ll p)
{
ll ans=1;
while(b)
{
if(b&1)
{
ans=ans*a;
if(ans>=p)//快速幂特殊处理1
{
ans=ans%p+p;
}
}
b>>=1;
a=a*a;
if(a>=p)//快速幂特殊处理2
{
a=a%p+p;
}
}
return ans;
}
ll f(ll i,ll n,ll p,ll a)
{
return (i==n+1||p==1)?1:qpow(a,f(i+1,n,phi(p),a),p);//对幂塔进行递归
}
int main()
{
ll t,a,b,i,p=1000000000,ans;
t=read();
for(i=1;i<=t;i++)
{
a=read();
b=read();
if(a==0)
{
if(b%2==0)
{
printf("1\n");
}
else
{
printf("0\n");
}
}
else
{
ans=f(1,b,p,a);
if(ans<p)
{
printf("%lld\n",ans);//因为最后结果小于1000000000,所以可以放心大胆地当作long long输出
}
else
{
printf("...%09lld\n",ans%p);//因为最后结果小于1000000000,所以可以放心大胆地当作long long输出
}
}
}
return 0;
}
SP10050 POWTOW - Power Tower City 题解的更多相关文章
- 【CodeForces】906 D. Power Tower 扩展欧拉定理
[题目]D. Power Tower [题意]给定长度为n的正整数序列和模数m,q次询问区间[l,r]累乘幂%m的答案.n,q<=10^5,m,ai<=10^9. [算法]扩展欧拉定理 [ ...
- CodeForces - 906D Power Tower(欧拉降幂定理)
Power Tower CodeForces - 906D 题目大意:有N个数字,然后给你q个区间,要你求每一个区间中所有的数字从左到右依次垒起来的次方的幂对m取模之后的数字是多少. 用到一个新知识, ...
- Codeforces 906D Power Tower(欧拉函数 + 欧拉公式)
题目链接 Power Tower 题意 给定一个序列,每次给定$l, r$ 求$w_{l}^{w_{l+1}^{w_{l+2}^{...^{w_{r}}}}}$ 对m取模的值 根据这个公式 每次 ...
- Codeforces Round #454 D. Power Tower (广义欧拉降幂)
D. Power Tower time limit per test 4.5 seconds memory limit per test 256 megabytes input standard in ...
- CF906D Power Tower
扩展欧拉定理 CF906D Power Tower 洛谷交的第二个黑题 题意 给出一个序列\(w-1,w_2,\cdots,w_n\),以及\(q\)个询问 每个询问给出\(l,r\),求: \[w_ ...
- CodeForces 907F Power Tower(扩展欧拉定理)
Priests of the Quetzalcoatl cult want to build a tower to represent a power of their god. Tower is u ...
- bzoj3125: CITY 题解
3125: CITY Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 486 Solved: 213[Submit][Status][Discuss] ...
- D - Power Tower欧拉降幂公式
题意:给你一个数组a,q次查询,每次l,r,要求 \(a_{l}^{a_{l+1}}^{a_{l+2}}...{a_r}\) 题解:由欧拉降幂可知,最多log次eu(m)肯定变1,那么直接暴力即可,还 ...
- Power Strings[poj2406]题解
Power Strings Description - Given two strings a and b we define ab to be their concatenation. For ex ...
- ZOJ 3195 Design the city 题解
这个题目大意是: 有N个城市,编号为0~N-1,给定N-1条无向带权边,Q个询问,每个询问求三个城市连起来的最小权值. 多组数据 每组数据 1 < N < 50000 1 < Q ...
随机推荐
- Java循环标签
大家是否见过这种for循环,在for循环前加了个标记的: outerLoop: for (; ; ) { for (; ; ) { break outerLoop; } } 我之前有一次在公司业务代码 ...
- jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
本文为博主原创,未经允许不得转载 1.jvisualm 的使用 打开 jdk 安装目录bin目录下的 jvisualvm.exe 工具 2. visual GC插件的安装及监控分析 Visual GC ...
- 【架构师视角系列】Apollo配置中心之Client端(二)
原创文章,转载请标注.https://www.cnblogs.com/boycelee/p/17978027 目录 声明 配置中心系列文章 一.客户端架构 1.Config Service职责 (1) ...
- 01-Linux命令和C语言基础
1 Linux开发环境搭建 1.1 虚拟机安装 1.安装VM Ware 2.安装ubuntu 分区 -- Linux没有盘符的概念 / -- 5000M /boot -- 系统启动过程中读取的重要文件 ...
- 2023-SWPU NSS秋季招新赛(校外赛道)Misc—我要成为原神高手WP
1.题目信息 我是神里绫华的狗!!! 2.解题方法 有个genshin.h文件夹,打开看看发现里面是一堆文件夹0 1A 1A0等等,而且每个文件夹里面都有文件,0 1A 1A0...看着很眼熟,我们用 ...
- java - 数组降序输出
package array; import java.util.Arrays; /** * 降序 */ public class Reverse { public static void main(S ...
- 【面试题精讲】JavaOptional用法
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 首发博客地址 文章更新计划 系列文章地址 Java 8 引入了 Option ...
- [转帖]MySQL的版本情况
Introducing MySQL Innovation and Long-Term Support (LTS) versions (oracle.com) Introducing MySQL Inn ...
- [转帖]Tomcat部署及优化
目录 一.Tomcat简介 1 Tomcat的三大核心组件 2 Java Servlet 3 JSP全称Java Server Pages 4 Tomcat 功能组件结构 5 Tomcat 请求过程 ...
- [转帖]TiDB Control 使用说明
https://docs.pingcap.com/zh/tidb/stable/tidb-control TiDB Control 是 TiDB 的命令行工具,用于获取 TiDB 状态信息,多用于调试 ...