题面

好久以前写的,发现自己居然一直没有写题解=。=

扩展欧拉定理:在$b>φ(p)$时有$a^b \equiv a^{b\%φ(p)+φ(p)}(mod$ $p)$

然后每次递归那个$a^{b\%φ(p)}$的部分,最后在$φ(p)=1$时返回即可

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e7+;
int pri[N],npr[N],phi[N];
long long T,mod;
void prework()
{
phi[]=,npr[]=true;
for(int i=,sz=;i<=;i++)
{
if(!npr[i]) pri[++sz]=i,phi[i]=i-;
for(int j=;j<=sz&&i*pri[j]<=;j++)
{
npr[i*pri[j]]=true;
phi[i*pri[j]]=phi[i]*pri[j];
if(i%pri[j]) phi[i*pri[j]]-=phi[i]; else break;
}
}
}
long long qpow(long long x,long long k,long long md)
{
if(k==) return x%md;
long long tmp=qpow(x,k/,md);
return k%?tmp*tmp%md*x%md:tmp*tmp%md;
}
long long Gas(long long md)
{
return md==?:qpow(,Gas(phi[md])+phi[md],md);
}
int main ()
{
scanf("%lld",&T),prework();
while(T--)
{
scanf("%lld",&mod);
printf("%lld\n",Gas(mod));
}
return ;
}

最新文章

  1. ubuntu中 不同JDK版本之间的切换
  2. 浅谈session/cookie
  3. UESTC 884 方老师的专题讲座 --数位DP
  4. Action的搭建及application、request、Session的运用 多种方法
  5. mysql导出查询结果到csv方法
  6. [转] 用source命令执行脚本和用sh执行脚本之间的区别
  7. UESTC_秋实大哥与家 2015 UESTC Training for Data Structures&lt;Problem E&gt;
  8. ThinkPHP - F函数,更新配置文件
  9. Java并发编程:线程的基本状态
  10. CF #244 D. Match &amp; Catch 后缀数组
  11. Fedora下phpMyAdmin的安装和配置
  12. 从狗日的Oracle上下载jdk
  13. 汇编转移指令jmp原理
  14. 11.C++-临时对象分析
  15. Virtual DOM 系列二:核心API
  16. HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
  17. Exp2 后门原理与实践 20165110
  18. python换行语法错误
  19. [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]
  20. lua中pairs 和 ipairs 的区别

热门文章

  1. kubernetes dashboard 安装时出现9090: getsockopt: connection refused错误
  2. vi/vim命令详解
  3. 深入 JSX
  4. 使用谷歌浏览器调试WEB前端的一些必备调试技巧
  5. 2018软工实践—Beta冲刺(4)
  6. 福大软工1816 &#183; 评分结果 &#183; Alpha冲刺
  7. Codeforces Round #196 (Div. 2) D. Book of Evil 树形dp
  8. 配置高可用集群(实验) corosyne+pacemaker
  9. HBase 架构与工作原理1 - HBase 的数据模型
  10. git 常用命令总结(一)