解题:BZOJ 3884 上帝与集合的正确用法
2024-08-24 16:43:47
好久以前写的,发现自己居然一直没有写题解=。=
扩展欧拉定理:在$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 ;
}
最新文章
- ubuntu中 不同JDK版本之间的切换
- 浅谈session/cookie
- UESTC 884 方老师的专题讲座 --数位DP
- Action的搭建及application、request、Session的运用 多种方法
- mysql导出查询结果到csv方法
- [转] 用source命令执行脚本和用sh执行脚本之间的区别
- UESTC_秋实大哥与家 2015 UESTC Training for Data Structures<;Problem E>;
- ThinkPHP - F函数,更新配置文件
- Java并发编程:线程的基本状态
- CF #244 D. Match &; Catch 后缀数组
- Fedora下phpMyAdmin的安装和配置
- 从狗日的Oracle上下载jdk
- 汇编转移指令jmp原理
- 11.C++-临时对象分析
- Virtual DOM 系列二:核心API
- HTML+CSS 对于英文单词强制换行但不截断单词的解决办法
- Exp2 后门原理与实践 20165110
- python换行语法错误
- [Aaronyang] 写给自己的WPF4.5 笔记17[Page实现页面导航]
- lua中pairs 和 ipairs 的区别
热门文章
- kubernetes dashboard 安装时出现9090: getsockopt: connection refused错误
- vi/vim命令详解
- 深入 JSX
- 使用谷歌浏览器调试WEB前端的一些必备调试技巧
- 2018软工实践—Beta冲刺(4)
- 福大软工1816 &#183; 评分结果 &#183; Alpha冲刺
- Codeforces Round #196 (Div. 2) D. Book of Evil 树形dp
- 配置高可用集群(实验) corosyne+pacemaker
- HBase 架构与工作原理1 - HBase 的数据模型
- git 常用命令总结(一)