BZOJ 3884: 上帝与集合的正确用法|数论
来源:互联网 发布:公安云计算架构 编辑:程序博客网 时间:2024/05/21 07:56
一道很神奇的数论题
利用欧拉定理随便搞搞
不会打题面给的222……很不爽啊
还是一起Orz PoPoQQQ的题解吧
http://blog.csdn.net/popoqqq/article/details/43951401
#include<set>#include<map>#include<ctime>#include<queue>#include<cmath>#include<cstdio>#include<vector>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;int sc(){ int i=0; char c=getchar(); while(c>'9'||c<'0')c=getchar(); while(c>='0'&&c<='9')i=i*10+c-'0',c=getchar(); return i;}int __phi(int x){ int ans=x; for(int i=2;i*i<=x;i++) if(x%i==0) { ans/=i;ans*=(i-1); while(x%i==0)x/=i; } if(x^1)ans/=x,ans*=(x-1); return ans;}int cal(long long x,int y,int p){ long long ans=1; while(y) { if(y&1)ans=(x*ans)%p; y>>=1; x=x*x%p; } //cout << p <<" " << ans <<endl; return ans;}int solve(int p){ if(p==1)return 0; int temp=0; while((p&1)==0)p>>=1,temp++; int phi=__phi(p); int ans=solve(phi); ans=(ans+phi-temp%phi)%phi; ans=cal(2,ans,p)%p; return ans<<temp;}int main(){ int T=sc(); while(T--) { long long x=sc(); printf("%d\n",solve(x)); } return 0;}
0 0
- BZOJ 3884: 上帝与集合的正确用法|数论
- BZOJ 3884 上帝与集合的正确用法(数论)
- bzoj 3884: 上帝与集合的正确用法 (数论)
- [BZOJ 3884] 上帝与集合的正确用法【欧拉定理/初等数论】
- BZOJ 3884(上帝与集合的正确用法-欧拉函数递推找极限)[Template:数论 V2]
- 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】上帝与集合的正确用法
- First Day of 2016 Spring Semester
- Leetcode@word search
- 大数据(十一) - Mahout
- Linux下的一个快速跳转到上N层目录的简单方法
- Leetcode java Word Search2
- BZOJ 3884: 上帝与集合的正确用法|数论
- Leetcode @ Word Search II
- 4034: [HAOI2015]T2 树链剖分+线段树
- ES6学习——迭代器(Iterators):接口规范概述
- VANET初步认识
- Linux下的一个快速跳转到上N层目录的简单方法
- RDD内部解密
- python编程初步知识
- 自学Java Swing日志(一)