P4139 上帝与集合的正确用法
本题是欧拉定理的应用。我这种蒟蒻当然不知道怎么证明啦!
那么我们就不证明了,来直接看结论:
或者
ab≡⎧⎩⎨⎪⎪ab%ϕ(p) gcd(a,p)=1ab gcd(a,p)≠1,b<ϕ(p)ab%ϕ(p)+ϕ(p) gcd(a,p)≠1,b≥ϕ(p) (mod pab≡⎧⎩⎨⎪⎪ab%ϕ(p) gcd(a,p)=1ab gcd(a,p)≠1,b<ϕ(p)ab%ϕ(p)+ϕ(p) gcd(a,p)≠1,b≥ϕ(p) (mod p)
或者观看这个
那么再来看本题,主要使用了后者:
所以可以写出递归式:
f(p)=qpow(2,f(ask_phi(p))+ask_phi(p),p);
得解。
题外话:我本来先打个表求出10^7以内的phi[],然后直接调用的,结果全T...
发现n<=1000,就用了ask_phi(),然后就过了。
#include <cstdio>
using namespace std;
const int N = ;
typedef long long LL; LL phi[N]; void make_phi(int n)
{
for(int i=;i<=n;i++) phi[i]=i;
for(int i=;i<=n;i+=) phi[i]/=;
for(int i=;i<=n;i+=)
{
if(phi[i]==i)
{
for(int j=i;j<=n;j+=i) phi[j]=(phi[j]/i)*(i-);
}
}
return;
} LL ask_phi(int x)
{
LL ans=x;
for(int i=;i*i<=x;i++)
{
if(x%i==)
{
while(x%i==) x/=i;
ans=(ans/i)*(i-);
}
}
if(x>) ans=(ans/x)*(x-);
return ans;
} LL qpow(LL a,LL b,LL m)
{
LL ans=;
while(b)
{
if(b&) ans=(ans*a)%m;
b=b>>;
a=(a*a)%m;
}
return ans;
} LL f(int p)
{
if(p==) return ;
return qpow(,f(ask_phi(p))+ask_phi(p),p);
} int main()
{
int n,x;
scanf("%d",&n);
//make_phi(N);
while(n--)
{
scanf("%d",&x);
printf("%lld\n",f(x));
}
return ;
}
AC代码
我们学到了什么姿势:
1.欧拉函数:φ(n)=[1,n]中与n互质的数的个数。
求phi(x):
LL ask_phi(int x)
{
LL ans=x;
for(int i=;i*i<=x;i++)
{
if(x%i==)
{
while(x%i==) x/=i;
ans=(ans/i)*(i-);
}
}
if(x>) ans=(ans/x)*(x-);
return ans;
}
ask_phi()
打表phi[]:
void make_phi(int n)
{
for(int i=;i<=n;i++) phi[i]=i;
for(int i=;i<=n;i+=) phi[i]/=;
for(int i=;i<=n;i+=)
{
if(phi[i]==i)
{
for(int j=i;j<=n;j+=i) phi[j]=(phi[j]/i)*(i-);
}
}
return;
}
make_phi()
二进制快速幂:
LL qpow(LL a,LL b,LL m)
{
LL ans=;
while(b)
{
if(b&) ans=(ans*a)%m;
b=b>>;
a=(a*a)%m;
}
return ans;
}
qpow()
P4139 上帝与集合的正确用法的更多相关文章
- 洛谷 P4139 上帝与集合的正确用法 解题报告
P4139 上帝与集合的正确用法 题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新 ...
- 洛谷P4139 上帝与集合的正确用法 [扩展欧拉定理]
题目传送门 上帝与集合的正确用法 题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”. ...
- 题解-洛谷P4139 上帝与集合的正确用法
上帝与集合的正确用法 \(T\) 组数据,每次给定 \(p\),求 \[\left(2^{\left(2^{\left(2^{\cdots}\right)}\right)}\right)\bmod p ...
- 洛谷 P4139 上帝与集合的正确用法
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...
- 【洛谷】P4139 上帝与集合的正确用法
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天,上帝创造了一个世界的基本元素,称做“元”. 第二天,上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...
- 洛谷P4139 上帝与集合的正确用法 拓欧
正解:拓展欧拉定理 解题报告: 首先放上拓欧公式? if ( b ≥ φ(p) ) ab ≡ ab%φ(p)+φ(p)(mod p)else ab≡ab mod φ(p) (mod p) 首先利用扩 ...
- [洛谷P4139]上帝与集合的正确用法
题目大意:多次询问,每次给你$p$询问$2^{2^{2^{\dots}}}\bmod p$ 题解:扩展欧拉定理,求出$\varphi(p)$即可.因为$2^{2^{2^{\dots}}}>> ...
- Luogu P4139 上帝与集合的正确用法【扩展欧拉定理】By cellur925
题目传送门 题目中的式子很符合扩展欧拉定理的样子.(如果你还不知扩展欧拉定理,戳).对于那一堆糟心的2,我们只需要递归即可,递归边界是模数为1. 另外,本题中好像必须要用快速乘的样子...否则无法通过 ...
- luogu P4139 上帝与集合的正确用法(扩展欧拉定理)
本蒟蒻现在才知带扩展欧拉定理. 对于任意的\(b\geq\varphi(p)\)有 \(a^b\equiv a^{b\ mod\ \varphi(p)+\varphi(p)}(mod\ p)\) 当\ ...
随机推荐
- 【调试技巧】 Fiddler高级用法之url映射请求
问题场景: 已发布线上APP出现接口错误,如何测试线上APP访问本地请求? 已发布线上H5页面,静态资源或js调试,如何映射本地js? 一般解决方案: 猜测(一般明显问题). 找到原发布包,修改请求资 ...
- BugPhobia进阶篇章:系统架构技术规格
0x01 :开发级需求分析 在开发过程中,团队本身在开发的起始阶段确定了基本的开发级需求分析: 在开发过程中,除了需要满足用户级需求以为,我们还需要针对开发团队的特点,满足一些开发级的需求和约束.作为 ...
- 爬虫时http错误提示
在爬虫,请求网站的时候,有时候出现域名报错,所出现的代码所对应的意思:
- JWT验证
理解 JSON Web Token(JWT) 验证 JSON Web Token认证的操作指南 在本文中,我们将了解JSON Web Token的全部内容. 我们将从JWT的基本概念开始,然后查看其结 ...
- 【转】GPS定位准确度CEP、RMS
转自:http://blog.sina.com.cn/s/blog_70f96fda0101lcb9.html CEP和RMS是GPS的定位准确度(俗称精度)单位,是误差概率单位.就拿2.5M CEP ...
- 伪静态与重定向--RewriteRule
环境:windows 10,phpstudy,sublime text.服务器使用Apache,网站根目录为E:\phpstudy\www\,所以.htaccess放在www目录下. RewriteR ...
- Ajax的使用~~~整理
之前对于ajax没有详细的学习,只是碰到的时候,就记一点,不是很有条理.虽然常用的都会用,但真经不起询问,知其然而不知其所以然,所以专门看了一下<JavaScript高级程序设计>中对aj ...
- [转帖] cnblog新闻区 “40岁以上的员工,请自觉离开”
“40岁以上的员工,请自觉离开” 投递人 itwriter 发布于 2018-04-29 22:36 评论(9) 有2733人阅读 原文链接 [收藏] « » “准确地说,华为目前要裁掉的.清退的,是 ...
- 基于C#.NET的高端智能化网络爬虫(一)(反爬虫哥必看)
前两天朋友发给我了一篇文章,是携程网反爬虫组的技术经理写的,大概讲的是如何用他的超高智商通过(挑衅.怜悯.嘲讽.猥琐)的方式来完美碾压爬虫开发者.今天我就先带大家开发一个最简单低端的爬虫,突破携程网超 ...
- (二) 关于配置travis-ci持续集成python pytest测试的相关记录
接上篇 上篇只是非常官方的描述了一下travis-ci是包括了些什么部分会如何工作但是并没有深入介绍也没有写demo. 这里先贴上一个我已经测试好了的python_travis-ci的环境 https ...