正题

题目链接:https://www.luogu.org/problemnew/show/P4139


题目大意

求2222222...%p2^{2^{2^{2^{2^{2^{2^{...}}}}}}}\%p2222222...%p


解题思路

欧拉定理
ab={ab%φ(p)+φ(p)(b>φ(p))ab%φ(p)(b≤φ(p))a^b=\left\{\begin{matrix}a^{b\%\varphi(p)+\varphi(p)}(b>\varphi(p)) \\ a^{b\%\varphi(p)}(b\leq\ \varphi(p)) \end{matrix}\right.ab={ab%φ(p)+φ(p)(b>φ(p))ab%φ(p)(b≤ φ(p))​

然后还有一个定理
φ(φ(φ(φ(φ(φ(φ(...)))))))\varphi(\varphi(\varphi(\varphi(\varphi(\varphi(\varphi(...)))))))φ(φ(φ(φ(φ(φ(φ(...)))))))这样子下去最多只有logloglog层就到0了。

所以我们得出一个算法,我们不停递归solve(p)solve(p)solve(p),然后令模数不断减小也就是solve(p)=2solve(φ(p))+φ(p)%psolve(p)=2^{solve(\varphi(p))+\varphi(p)}\%psolve(p)=2solve(φ(p))+φ(p)%p
直到p=0p=0p=0


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int P=1e7;
int T,p,phi[P+10];
void Get_phi()
{phi[1]=1;for(int i=2;i<=P;i++)if(!phi[i])for(int j=i;j<=P;j+=i){if(!phi[j]) phi[j]=j;phi[j]=phi[j]/i*(i-1);}
}
int power(int x,int b,int p)
{int ans=1;while(b){if(b&1) ans=(long long)ans*x%p;x=(long long)x*x%p;b>>=1; }return ans;
}
int solve(int x)
{if(x==1) return 0;return power(2,solve(phi[x])+phi[x],x);
}
int main()
{scanf("%d",&T);Get_phi();while(T--){scanf("%d",&p);printf("%d\n",solve(p));}
}

P4139-上帝与集合的正确用法【欧拉定理】相关推荐

  1. BZOJ-3884 上帝与集合的正确用法 欧拉定理

    再次仰望高端玩家Po姐 3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 772 Solved: 361 [Submit] ...

  2. Luogu P4139 上帝与集合的正确用法【扩展欧拉定理】By cellur925

    题目传送门 题目中的式子很符合扩展欧拉定理的样子.(如果你还不知扩展欧拉定理,戳).对于那一堆糟心的2,我们只需要递归即可,递归边界是模数为1. 另外,本题中好像必须要用快速乘的样子...否则无法通过 ...

  3. 【洛谷】P4139 上帝与集合的正确用法

    题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天,上帝创造了一个世界的基本元素,称做"元". 第二天,上帝创造了一个新的元素,称作"α" ...

  4. 【题解】 P4139 上帝与集合的正确用法

    \(Decription:\) 给出T组询问,每次给出一个p,求\(2^{2^{2^{2...}}} \mod {p}\) \(Sample\) \(Input:\) 3 2 3 6 \(Sample ...

  5. P4139 上帝与集合的正确用法

    题目描述 题目链接 一句话题意:2222...modp2^{2^{2^{2...}}} mod\ p2222...mod p 输入格式 第一行一个整数T,表示数据个数. 接下来T行,每行一个正整数p, ...

  6. bzoj 3884: 上帝与集合的正确用法(欧拉函数)

    3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 2574  Solved: 1151 [Submit][Status] ...

  7. 扩展欧拉定理【p4139】上帝与集合的正确用法

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  8. 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理

    题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α&quo ...

  9. bzoj 3884 上帝与集合的正确用法 扩展欧拉定理

    Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...

  10. (bzoj 3884 上帝与集合的正确用法)欧拉定理

    题目 Time Limit: 5 Sec Memory Limit: 128 MB Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元 ...

最新文章

  1. Python bytes 的使用
  2. python随机生成车牌_Python实现随机生成任意数量车牌号
  3. Silverlight 5的时间表及大量问题
  4. 【CoppeliaSim】远程 API 之 Python 控制,对比 V-rep 有些不同
  5. 初识OneNote 2016
  6. elk 第二篇 , 为elk加入redis, 替换下beats(个人感觉不错2)
  7. Python地理可视化工具包 folium介绍
  8. html文件上传添加额外参数,bootstrap-fileinput组件在上传时传递额外参数
  9. python简单笔记
  10. java 中的原始类型与原始封装类型
  11. 前端怎么自我介绍_未雨绸缪,小米前端实习面经
  12. (转)如何看待IT对于证券行业的价值
  13. 【线性代数】P3 拉普拉斯定理
  14. 检验新买内存条的真假
  15. banner图的开发
  16. 使用Intent协议在webview中跳转三方app
  17. 寄存器、缓存、内存、硬盘、存储器的理解
  18. 计算机论文谢辞,毕业论文谢辞
  19. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
  20. Outlook-VBA-03-收件箱附件处理

热门文章

  1. java final 修改_“无法改变的设计”——浅谈Java中的final关键字
  2. mysql group 条件,mysql - mysql group by,两个条件,限制1 - SO中文参考 - www.soinside.com...
  3. android byte[] 转string 好多问号_#WIPI# Android使用HID设备
  4. mybatis collection标签_一对多的关系,在MyBatis中如何映射?
  5. service层中有某个事物要立马提交_硬货你要的,binder机制来了
  6. 7-1 矩阵链相乘问题 (20 分)(思路+详解+题目解析) 动态规划做法
  7. C++实现AOE网中的关键路径算法及机动时间计算算法(邻接表存储)
  8. I - Interesting Permutation Gym - 102394I(排列组合)
  9. 数据结构与算法--字符串的排列组合问题
  10. 数据结构与索引-- mySql索引诡异事件