Description

根据一些书上的记载,上帝的一次失败的创世经历是这样的:

第一天, 上帝创造了一个世界的基本元素,称做“元”。

第二天, 上帝创造了一个新的元素,称作“α”。“α”被定义为“元”构成的集合。容易发现,一共有两种不同的“α”。

第三天, 上帝又创造了一个新的元素,称作“β”。“β”被定义为“α”构成的集合。容易发现,一共有四种不同的“β”。

第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合。显然,一共会有16种不同的“γ”。

如果按照这样下去,上帝创造的第四种元素将会有65536种,第五种元素将会有2^65536种。这将会是一个天文数字。

然而,上帝并没有预料到元素种类数的增长是如此的迅速。他想要让世界的元素丰富起来,因此,日复一日,年复一年,他重复地创造着新的元素……

然而不久,当上帝创造出最后一种元素“θ”时,他发现这世界的元素实在是太多了,以致于世界的容量不足,无法承受。因此在这一天,上帝毁灭了世界。

至今,上帝仍记得那次失败的创世经历,现在他想问问你,他最后一次创造的元素“θ”一共有多少种?

上帝觉得这个数字可能过于巨大而无法表示出来,因此你只需要回答这个数对p取模后的值即可。

你可以认为上帝从“α”到“θ”一共创造了\(10^9\)次元素,或\(10^{18}\)次,或者干脆\(\infty\)次

One word.

\(2^{2^{2^{....}}}mod\ p\)

Input

第一行一个整数\(T\),表示数据个数。

接下来\(T\)行,每行一个正整数\(p\),代表你需要取模的值

Output

\(T\)行,每行一个正整数,为答案对\(p\)取模后的值

直接套公式即可,证明的话目前在准备\(Noip\),将来证明.
\[ a^x \equiv a^{x\ mod \ \phi(m) +\phi(m)}\ (mod \ m) \]
所以这里递归求解即可.

求\(\phi()\)的话.我没有用线性筛求,选择了
\[ \phi(x)=x \times \prod_{i=1}^{r} (1-\frac{1}{p_1}) \]
这里的\(p\)为质数.

代码

#include<cstdio>
#include<cctype>
#define R register
#define int long long
using namespace std;
inline void in(int &x)
{int f=1;x=0;char s=getchar();while(!isdigit(s)){if(s=='-')f=-1;s=getchar();}while(isdigit(s)){x=x*10+s-'0';s=getchar();}x*=f;
}
inline int phi(int x)
{int res=x;for(R int i=2;i*i<=x;i++){if(x%i==0){res=res/i*(i-1);while(x%i==0)x/=i;}}if(x>1)res=res/x*(x-1);return res;
}
int T;
inline int ksm(int x,int y,int p)
{int res=1;for(;y;y>>=1,x=x*x%p)if(y&1)res=res*x%p;return res;
}
inline int calc(int x)
{if(x==1)return 0;return ksm(2,calc(phi(x))+phi(x),x);
}
signed main()
{in(T);for(R int x;T;T--){in(x);printf("%lld\n",calc(x));}
}

转载于:https://www.cnblogs.com/-guz/p/9786376.html

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. python在哪里学比较好-Python哪里学习好?老男孩python入门
  2. none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
  3. 补第一阶段冲刺站立会议3(应发表日期5月15日)
  4. 文件操作(stat)
  5. 利用SciTE的导出功能保持代码语法着色效果
  6. 微信小程序 ---- 学习目标认识小程序
  7. 点钞视频软件测试,模拟银行综合实验
  8. 怎么将mov格式转换成mp4?
  9. QT error: undefined reference to `__imp__ZN12QSqlDatabase7driversEv‘报错
  10. linux防火墙开放端口无法打开,LInux 开启防火墙网站无法访问问题
  11. 手机六大操作系统优缺点比较
  12. each 和 forEach 和{{each}}
  13. 火绒规则 禁止所有软件的安装_【技术宅】火绒安全软件防流氓规则编写及使用小白教程(附成品)...
  14. Linux命令之查找命令
  15. 教你怎样任意转换视频格式
  16. vue项目运行后,生成的两个地址Local和Network的区别
  17. 螺旋矩阵一个n行n列的螺旅矩阵可由如下方法生成:从矩阵的左上角(第1行第 1列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。
  18. ——致远互联渠道伙伴系列访谈之四川凤凰世纪
  19. leetcode系列-455. 分发饼干
  20. wandb.log()的异常

热门文章

  1. 多人手柄联网游戏_多人联网游戏:迈出的第一步
  2. 日语实用生活词汇系列——理发用语篇「髪を切る」
  3. 根据氨基酸变化,从NCBI - ClinVar数据库抓取信息(基于python - BeautifulSoup)
  4. [C++]矩阵乘法Strassen算法-----代码实现
  5. 传统计算机与未来计算机的优劣势,传统计算机
  6. 网络推广从公司起名开始 上海添力张进老师主讲
  7. 洞察,向华为学客户需求及市场机会挖掘
  8. 《游戏机制——高级游戏设计技术》一1.4 原型制作技术
  9. 网友惊呆了!阿里员工首次曝光这些招聘内幕,你都知道哪些?
  10. Traceback (most recent call last):异常报错解决(1.22.)