BZOJ 3884 上帝与集合的正确用法 欧拉定理
来源:互联网 发布:java二叉树的建立 编辑:程序博客网 时间:2024/05/06 15:51
题意:链接
方法:欧拉定理
解析:
首先你需要知道一个公式。
注意适用条件x>=Phi(C)
然而对于本道题来说x是无穷,所以可以直接上降幂公式解决。
证明
代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define N 3000010#define M 10000010using namespace std;typedef long long ll;ll t,p,tot;int prime[N],euler[M],v[M];void sieve(){ for(int i=2;i<=10000000;i++) { if(!v[i]) { prime[++tot]=i; euler[i]=i-1; } for(int j=1;j<=tot&&i*prime[j]<=10000000;j++) { v[i*prime[j]]=1; if(i%prime[j]==0) { euler[i*prime[j]]=euler[i]*prime[j]; break; }else { euler[i*prime[j]]=euler[i]*(prime[j]-1); } } }}ll quick_my(ll x,ll y,ll mod){ ll ret=1; while(y) { if(y&1)ret=(ret*x)%mod; x=(x*x)%mod; y>>=1; } return ret;}int check(ll x){ while(x%2==0)x/=2; if(x==1)return 1; return 0; }ll solve(ll x){ ll ret=0; if(check(euler[x]))ret+=euler[x]; else ret+=solve(euler[x])+euler[x]; return quick_my(2,ret,x); }int main(){ sieve(); scanf("%lld",&t); while(t--) { scanf("%lld",&p); if(p==1){puts("0");continue;} printf("%lld\n",solve(p)); }}
0 0
- BZOJ 3884 上帝与集合的正确用法 欧拉定理
- [BZOJ 3884] 上帝与集合的正确用法【欧拉定理/初等数论】
- [BZOJ 3884][欧拉定理]上帝与集合的正确用法
- BZOJ 3884 上帝与集合的正确用法 欧拉定理
- BZOJ-3884 上帝与集合的正确用法 欧拉定理
- 【BZOJ 3884】【欧拉定理或者求幂大法】上帝与集合的正确用法
- bzoj 3884: 上帝与集合的正确用法 欧拉定理+数学
- 【BZOJ 3884】上帝与集合的正确用法【欧拉定理】&【剧毒题】
- BZOJ 3884 上帝与集合的正确用法 (欧拉定理)
- [BZOJ 3884]上帝与集合的正确用法:欧拉定理
- (bzoj 3884 上帝与集合的正确用法)<欧拉定理>
- 欧拉定理 BZOJ 3884 上帝与集合的正确用法
- [BZOJ 3884] 上帝与集合的正确用法 欧拉定理
- bzoj 3884 上帝与集合的正确用法 扩展欧拉定理
- BZOJ 3884 上帝与集合的正确用法 (扩展欧拉定理降幂)
- [bzoj3884]上帝与集合的正确用法 欧拉定理
- bzoj3884上帝与集合的正确用法 欧拉定理
- 【欧拉定理】BZOJ_3884_上帝与集合的正确用法
- 【基础】常用的机器学习&数据挖掘知识点
- 交友处事,拒绝垃圾,远离负能量——觉悟
- 机器学习算法基础概念学习总结
- 建立一个文本文件in.txt,在其中输入若干个正整数,中间用空格分隔,然后保存起来;在窗体上添加一个命令按钮和一个标签框,当单击命令按钮时将in.txt文件中存放的所有的能被3整除的数的和显示在标签框
- js base64 加密
- BZOJ 3884 上帝与集合的正确用法 欧拉定理
- 通过Python判断主机是否存在
- PHP基础----面向对象相关特性----11成员方法和类方法
- Fragment和Activity的关系
- 自然语言处理课程作业 中文文本情感分类
- PHP基础----面向对象相关特性----12类的继承与方法重写
- NLP--自然语言处理与机器学习会议
- codebook-based precoding and non-codebook-based precoding
- 根据文本内容计算cell的高度