【数学】[BZOJ 3884] 上帝与集合的正确用法
Description

Input
Output
第一感觉:不可做- -。
但是p与2不一定互质,所以我们可以化成下面的形式。

设f(p)=
。
那么我们可以得到一个不断递推的公式f(p)=2^(f(phi(p))+phi(p))%p.边界:p=1,f(p)=0.
证明算法复杂度如下:
若p为偶数,则ϕ(p)≤p2;
若p为奇数,则p存在一个奇数因子q,使得ϕ(p)存在一个偶数因子(q−1),转化为偶数的情况。
由此可知,ϕ(ϕ(...ϕ(p)))的计算经过O(logp)次的迭代就到了1,所以f(p)的计算是O(p√logp)的。(部分思(dai)想(ma)选自http://blog.csdn.net/skywalkert/article/details/43955611)
第二种方法的代码。。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm> #define ll long long
using namespace std; int mod,num[]; int Qvod(int k,int mo)
{
ll ans=,x=;
while(k!=)
{
if(k&)ans=ans*x%mo;
x=x*x%mo;
k>>=;
}
return ans;
} int phi(int x)
{
int ans=x,aa=x;
for(int i=;i<=sqrt(ans);i++)if(x%i==){
while(x%i==)x/=i;
aa=(ll)aa*(i-)/i;
}
if(x!=)aa=(ll)aa*(x-)/x;
return aa;
} int f(int x)
{
if(x==)return ;
if(num[x])
return num[x];
int sb=phi(x);
num[x]=Qvod(f(sb)+sb,x);
return num[x];
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&mod);
printf("%d\n",f(mod));
}
return ;
}
【数学】[BZOJ 3884] 上帝与集合的正确用法的更多相关文章
- bzoj 3884 上帝与集合的正确用法 指数循环节
3884: 上帝与集合的正确用法 Time Limit: 5 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description 根据一些 ...
- BZOJ 3884 上帝与集合的正确用法
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作&quo ...
- BZOJ 3884 上帝与集合的正确用法(扩展欧拉定理)
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...
- bzoj 3884 上帝与集合的正确用法(递归,欧拉函数)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3884 [题意] 求2^2^2… mod p [思路] 设p=2^k * q+(1/0) ...
- BZOJ 3884: 上帝与集合的正确用法 [欧拉降幂]
PoPoQQQ大爷太神了 只要用欧拉定理递归下去就好了.... 然而还是有些细节没考虑好: $(P,2) \neq 1$时分解$P=2^k*q$的形式,然后变成$2^k(2^{(2^{2^{...}} ...
- BZOJ.3884.上帝与集合的正确用法(扩展欧拉定理)
\(Description\) 给定p, \(Solution\) 欧拉定理:\(若(a,p)=1\),则\(a^b\equiv a^{b\%\varphi(p)}(mod\ p)\). 扩展欧拉定理 ...
- 解题:BZOJ 3884 上帝与集合的正确用法
题面 好久以前写的,发现自己居然一直没有写题解=.= 扩展欧拉定理:在$b>φ(p)$时有$a^b \equiv a^{b\%φ(p)+φ(p)}(mod$ $p)$ 然后每次递归那个$a^{b ...
- BZOJ 3884: 上帝与集合的正确用法 扩展欧拉定理 + 快速幂
Code: #include<bits/stdc++.h> #define maxn 10000004 #define ll long long using namespace std; ...
- BZOJ 3884 上帝与集合的正确用法题解
一道智慧题 其实解这题需要用到扩展欧拉定理, 有了上面的公式,我们不难看出此题的解法. 设b为2^2^2^2^2.....显然,b要比φ(p)要大,所以可以直接套公式 modp时的答案 ans(p)= ...
随机推荐
- Java Concurrency - Phaser, Controlling phase change in concurrent phased tasks
The Phaser class provides a method that is executed each time the phaser changes the phase. It's the ...
- iOS开发——锁屏监听
公司所做的项目,锁屏监听是为了60秒后,解锁瓶后显示[手势解锁]或[指纹验证]: 第一步:AppDelegate.m 头部导入 #import <notify.h> #define Not ...
- 获取bundle目录下的所有图片文件名
今天在写代码时候,偶然发现自己忘记了一些oc的基础知识(这里指的是获取bundle目录下的所有图片),感到很不爽.在百度了几次,发现自己的领悟能力实在不行,感觉萌萌的::>_<:: 好了, ...
- ASP.NET中使用开源插件zTree的小结
在最近的项目应用中,找到了zTree免费的好东西,这里总结一下: 源码下载:http://www.ztree.me/ 效果是酱紫的: 前台代码: 样式和脚本 <link rel="st ...
- Php 操作事务
PHP来操作数据库 关于事务操作 连接数据 mysql_connect('localhost','root','123'); 设置字符集 mysql_query('set names utf8'); ...
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)A蔡老板的会议
题目描述 图灵杯个人赛就要开始了,蔡老板召集俱乐部各部门的部长开会.综合楼有N (1<=N<=1000)间办公室,编号1~N每个办公室有一个部长在工(mo)作(yu),其中X号是蔡老板的办 ...
- L011-oldboy-mysql-dba-lesson11
L011-oldboy-mysql-dba-lesson11 [root@ab01 ~]# mysqladmin -i 1 -r status #mysqladmin监控的命令 Uptime: ...
- L1范式和L2范式的区别
L1 and L2 regularization add a cost to high valued weights to prevent overfitting. L1 regularization ...
- CCNA第三讲笔记
TCP/IP可以分为四层或者五层 应用层.传输层.网络层.网络接口层 或者 应用层.传输层.网络层.数据链路层.物理层 与OSI相比 相同点:都有层次结构 不同点:TCP/IP的应用层包含了OSI的应 ...
- c++,C# 转换
//C++中的DLL函数原型为 //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsi ...