题目

对于100%的数据,T<=1000,p<=10^7

题解

来捉这道神题

欧拉定理的一般形式:

\[a^{m} \equiv a^{m \mod \varphi(p) + [m \ge \varphi(p)]\varphi(p)} \pmod p
\]

我们令

\[ans(p) = 2^{2^{2^{...}}} \mod p
\]

那么有

\[ans(p) = 2^{ans(\varphi(p)) + \varphi(p)} \mod p
\]

\(O(\log p)\)递归即可

#include<iostream>
#include<cstdio>
#include<cmath>
#include<bitset>
#include<cstring>
#include<algorithm>
#define LL long long int
#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)
#define REP(i,n) for (int i = 1; i <= (n); i++)
#define BUG(s,n) for (int i = 1; i <= (n); i++) cout<<s[i]<<' '; puts("");
using namespace std;
const int maxn = 10000005,maxm = 100005,INF = 1000000000;
inline int read(){
int out = 0,flag = 1; char c = getchar();
while (c < 48 || c > 57){if (c == '-') flag = -1; c = getchar();}
while (c >= 48 && c <= 57){out = (out << 3) + (out << 1) + c - 48; c = getchar();}
return out * flag;
}
bitset<maxn> isn;
int p[maxn],phi[maxn],pi;
void init(){
phi[1] = 1;
for (int i = 2; i <= 10000000; i++){
if (!isn[i]) p[++pi] = i,phi[i] = i - 1;
for (int j = 1; j <= pi && i * p[j] <= 10000000; j++){
isn[i * p[j]] = true;
if (i % p[j] == 0){
phi[i * p[j]] = phi[i] * p[j];
break;
}
phi[i * p[j]] = phi[i] * (p[j] - 1);
}
}
}
int qpow(int a,int b,int p){
int ans = 1;
for (; b; b >>= 1,a = 1ll * a * a % p)
if (b & 1) ans = 1ll * ans * a % p;
return ans;
}
int Ans(int p){
if (p == 1) return 0;
return qpow(2,Ans(phi[p]) + phi[p],p);
}
int main(){
init();
int T = read(),p;
while (T--){
p = read();
printf("%d\n",Ans(p));
}
return 0;
}

最新文章

  1. 【MySQL】锁入门
  2. unity初始篇 选择游戏对象
  3. Enfold主题详解与实例视频教程 WordPress建站视频教程
  4. JAVA 实战练习
  5. win7 debian 双系统修改引导项顺序
  6. mysql触发器的例子--插入前更新数据
  7. layer父页面刷新
  8. 真实故事:网站遭遇DOS攻击
  9. android传值
  10. c++中 . 和 -&gt; 的区别是什么?
  11. Linux记录-监控系统开发
  12. ArcGIS AddIn 图斑比例分割工具,调用捕捉功能
  13. maven解决omitted for duplicate(依赖冲突)
  14. 【转】WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式
  15. c++中map按key和value排序
  16. Linux用户管理机制
  17. 为ASP.NET控件加入快捷菜单
  18. [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)
  19. 最小生成树(kruskal模版 Prim模板)
  20. IOS常用代码整理

热门文章

  1. PAT (Advanced Level) Practise - 1092. To Buy or Not to Buy (20)
  2. CSS3和动画
  3. XML格式与实体类的转换
  4. Ubuntu 14.04 LTS 触摸板无法使用
  5. 认识mysql(4)
  6. CSS+JS实现流星雨动画
  7. Python3爬取起猫眼电影实时票房信息,解决文字反爬~~~附源代码
  8. HDU:2846-Repository
  9. Eclipse快速输出System.out.println();
  10. WPF实现QQ群文件列表动画(一)