洛谷4139 bzoj 3884 上帝与集合的正确用法
传送门
•题意
求$2^{2^{2^{2^{2^{2^{...^{2}}}}}}}$ (无穷个2) 对p取模的值
•思路
设答案为f(p)
$2^{2^{2^{2^{2^{2^{...^{2}}}}}}}\%p$
$=2^{(2^{2^{2^{2^{2^{...^{2}}}}}}\%\varphi(p)+ \varphi(p))}\%p$
$=2^{(2^{2^{2^{2^{2^{...^{2}}}}}}\%\varphi(p)+ \varphi(p))}\%p$
$=2^{(2^{(2^{2^{2^{2^{...^{2}}}}}\%\varphi(\varphi(p)+\varphi(\varphi(p))))}\%\varphi(p)+ \varphi(p))}\%p$
...
得到递推式 $2^{f(\varphi(p))+\varphi(p)}(mod\ p)$
利用欧拉降幂
$a^{b}=\begin{cases}a^{b\%\varphi(p)} \ \ \ \ \ \ \ \ \ \ gcd(a,p)=1 \\ a^{b} \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ gcd(a,p)\neq 1,b \leqslant \varphi(p)\\a^{b\%\varphi(p)+\varphi(p)} \ \ gcd(a,p)\neq1,b\geqslant \varphi(p) \\ \end{cases}$
由于2的幂数是无穷的,肯定$>p$,所以可以直接使用$a^{b\%\varphi(p)+\varphi(p)} $
•代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 ll qpow(ll a,ll b,ll mod) 5 { 6 ll res=1; 7 while(b) 8 { 9 if(b&1) 10 res=res*a%mod; 11 a=a*a%mod; 12 b>>=1; 13 } 14 return res; 15 } 16 17 ll phi(ll x) 18 { 19 ll res=x; 20 for(int i=2;i*i<=x;i++) 21 { 22 if(x%i==0) 23 { 24 while(x%i==0) 25 x/=i; 26 res=res-res/i; 27 } 28 } 29 if(x>1) 30 res=res-res/x; 31 return res; 32 } 33 34 ll solve(ll m) 35 { 36 if(m==1) 37 return 0; 38 39 ll p=phi(m); 40 return qpow(2,solve(p)+p,m); 41 } 42 43 int main() 44 { 45 int t; 46 cin>>t; 47 while(t--) 48 { 49 ll m; 50 cin>>m; 51 cout<<solve(m)<<endl; 52 } 53 }View Code
转载于:https://www.cnblogs.com/MMMinoz/p/11448399.html
洛谷4139 bzoj 3884 上帝与集合的正确用法相关推荐
- bzoj 3884: 上帝与集合的正确用法(欧拉函数)
3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 2574 Solved: 1151 [Submit][Status] ...
- BZOJ - 3884 上帝与集合的正确用法
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...
- bzoj 3884 上帝与集合的正确用法 扩展欧拉定理
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...
- BZOJ 3884: 上帝与集合的正确用法 欧拉降幂
根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α".&q ...
- (bzoj 3884 上帝与集合的正确用法)欧拉定理
题目 Time Limit: 5 Sec Memory Limit: 128 MB Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元 ...
- BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
题目大意:求2^(2^(2^(2^(2^...)))) mod p的值 题解:https://blog.csdn.net/popoqqq/article/details/43951401 #inclu ...
- BZOJ 3884 上帝与集合的正确用法
学习借鉴了skywalkert大佬的题解 Orz 首先题目需要用到欧拉函数的一个性质 $\forall x\geq \phi(p)$ $a^x\equiv a^{x \; mod \; \phi(p) ...
- 3884: 上帝与集合的正确用法 —— 欧拉降幂
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...
- 3884: 上帝与集合的正确用法 欧拉函数+降幂公式
Orz题解 降幂公式:a^x ≡a^(x modϕ(p)+ϕ(p)) (mod p) #include<iostream> #include<cstdio> #include& ...
最新文章
- MPB:南土所褚海燕组-小麦相关微生物的野外采样与样品保存
- mysql基于传统的log_file及log_pos主从复制
- 数据结构源码笔记(C语言):二叉树遍历
- win7系统相关问题故障解决
- 如何在命令提示符下编译运行含有Package的java文件
- linux各种复制命令
- 《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位
- careercup-位操作5.1
- python—符号 | ^的使用
- vmware ubuntu 16.04 guest 修复不能桌面大小自动调整和从宿主机复制粘贴的问题
- 【C++】反向迭代器(rbegin,rend)(转载)
- VBA—EXCEL操作集合—05
- 反编译DLL并修改后再生成DLL
- 智能问答系统CQA调研--工业界
- 磁盘分区误删怎样恢复?
- CSS,文本溢出显示省略号
- 中国大学慕课《数据挖掘与python实践》期末测验版本3
- Smbus host controller not enabled Assuming drive cache : write through
- Grafana实现SQL查询参数查询
- upload-labs安装及攻略
热门文章
- word2003如何设置护眼模式_连锁企业如何设置「单店盈利模式」?
- views 多个文件夹 netcore_Visual Studio 2019发布.NET Core项目部署或者独立运行的方法...
- centos非root用户创建用户_CentOS中用户和用户组管理
- java获取本地外网ip地址
- 【SSL】java keytool工具操作java带的(JKS)证书库
- spring cloud集成Eureka
- 用Location对象和history对象修改页面url
- 在linux中的sort命令,linux中sort命令
- ckks方案优化最好的_果断收藏:SEO高级优化技能升级策略!
- 优先级调度算法实现_一篇讲透嵌入式操作系统任务调度