bzoj3884 上帝与集合的正确用法
2017-09-06 21:54
232 查看
题目
又是一道数学题,233
这样的式子,我们用欧拉公式吧。。。
然后呢发现这是可以直接递归下去算的。
复杂度O(log p)
又是一道数学题,233
这样的式子,我们用欧拉公式吧。。。
然后呢发现这是可以直接递归下去算的。
#include<bits/stdc++.h> #define N 10000000 #define LL long long using namespace std; int phi[N+1],prime[N+1],siz; bool noprime[N+1]; LL p,T; void init() { noprime[1]=true; phi[1]=1; for(LL i=2;i<=N;i++) { if(!noprime[i]) { prime[++siz]=i; phi[i]=i-1; } for(LL j=1;j<=siz&&i*prime[j]<=N;j++) { noprime[i*prime[j]]=true; if(i%prime[j]==0) { phi[prime[j]*i]=phi[i]*prime[j]; break; } phi[prime[j]*i]=phi[i]*phi[prime[j]]; } } } LL ksm(LL A,LL B,LL C) { LL Ans=1; while(B) { if(B&1)Ans=(Ans*A)%C; A=(A*A)%C; B>>=1; } return Ans; } LL f(LL x) { if(x==1)return 0; return ksm(2,f(phi[x])+phi[x],x); } int main() { scanf("%lld",&T); init(); while(T--) { scanf("%lld",&p); printf("%lld\n",f(p)); } return 0; }
复杂度O(log p)
相关文章推荐
- BZOJ3884: 上帝与集合的正确用法
- 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
- 数论专题练习:【bzoj3884】上帝与集合的正确用法
- BZOJ3884 上帝与集合的正确用法(欧拉函数)
- bzoj3884上帝与集合的正确用法 欧拉定理
- BZOJ3884 上帝与集合的正确用法
- BZOJ3884 上帝与集合的正确用法(欧拉函数)
- [BZOJ3884]上帝与集合的正确用法 欧拉函数
- [bzoj3884]上帝与集合的正确用法——欧拉函数
- bzoj 3884: 上帝与集合的正确用法
- BZOJ-3884 上帝与集合的正确用法 欧拉定理
- BZOJ 3884 上帝与集合的正确用法
- 【BZOJ3884】【降幂大法】上帝与集合的正确用法
- bzoj3884: 上帝与集合的正确用法(数论)
- 【BZOJ3884】上帝与集合的正确用法(欧拉定理,数论)
- [题解]bzoj3884 上帝与集合的正确用法
- [BZOJ 3884]上帝与集合的正确用法:欧拉定理
- 【BZOJ3884】上帝与集合的正确用法(欧拉定理,数论)
- BZOJ 3884 上帝与集合的正确用法
- [bzoj3884]上帝与集合的正确用法(数论 拓展欧拉定理)