洛谷P4139 上帝与集合的正确用法 拓欧
正解:拓展欧拉定理
解题报告:
首先放上拓欧公式?
if ( b ≥ φ(p) ) ab ≡ ab%φ(p)+φ(p)(mod p)
else ab≡ab mod φ(p) (mod p)
首先利用扩展欧拉定理。
- 原式=2(剩余数%φ(p)+φ(p))
- 而 剩余数% φ(p)又可以进行分解,所以这个过程可以用递归实现。
- 注意边界条件:当p=1时,余数自然为0。
然后就最最最不用动脑子的思路啊,我们一路做下去做下去,一直膜膜膜膜膜%,总有一天φ(p)是1了然后此时mod一定是0就可以一路再返回回去,能理解趴?
好滴那就是这样,没了!
然后放个代码(哇我发现!我博客越来越简洁明了没废话了yeah!
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll prime[],ol[],tot;
inline ll read()
{
;;
'))ch=getchar();
;
)+(x<<)+(ch^'),ch=getchar();
return y?x:-x;
}
inline ll poww(ll a,ll b,ll mod)
{
;
while(b)
{
)t=t*a%mod;
a=a*a%mod;
b>>=;
}
return t;
}
void pre()
{
ol[]=;
;i<=;i++)
{
){prime[++tot]=i;ol[i]=i-;}
;j<=tot && i*prime[j]<=;j++)
{
){ol[i*prime[j]]=ol[i]*prime[j];j=tot+;}
);
}
}
}
ll dfs(ll x)
{
);
,ol[x]+dfs(ol[x]),x);
}
int main()
{
ll T=read();pre();
while(T--)printf("%lld\n",dfs(read()));
;
}
(
自打脸说句废话
我觉得这题名字,好可爱啊x
然后题目描述也是,感觉是个很有趣的人出的题目呢
洛谷P4139 上帝与集合的正确用法 拓欧的更多相关文章
- 洛谷 P4139 上帝与集合的正确用法 解题报告
P4139 上帝与集合的正确用法 题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新 ...
- 洛谷P4139 上帝与集合的正确用法 [扩展欧拉定理]
题目传送门 上帝与集合的正确用法 题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”. ...
- 题解-洛谷P4139 上帝与集合的正确用法
上帝与集合的正确用法 \(T\) 组数据,每次给定 \(p\),求 \[\left(2^{\left(2^{\left(2^{\cdots}\right)}\right)}\right)\bmod p ...
- 洛谷 P4139 上帝与集合的正确用法
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...
- [洛谷P4139]上帝与集合的正确用法
题目大意:多次询问,每次给你$p$询问$2^{2^{2^{\dots}}}\bmod p$ 题解:扩展欧拉定理,求出$\varphi(p)$即可.因为$2^{2^{2^{\dots}}}>> ...
- 【洛谷】P4139 上帝与集合的正确用法
题目描述 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天,上帝创造了一个世界的基本元素,称做“元”. 第二天,上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容 ...
- P4139 上帝与集合的正确用法
本题是欧拉定理的应用.我这种蒟蒻当然不知道怎么证明啦! 那么我们就不证明了,来直接看结论: ab≡⎧⎩⎨⎪⎪ab%φ(p)abab%φ(p)+φ(p)gcd(a,p)=1gcd(a,p)≠1,b< ...
- Luogu P4139 上帝与集合的正确用法【扩展欧拉定理】By cellur925
题目传送门 题目中的式子很符合扩展欧拉定理的样子.(如果你还不知扩展欧拉定理,戳).对于那一堆糟心的2,我们只需要递归即可,递归边界是模数为1. 另外,本题中好像必须要用快速乘的样子...否则无法通过 ...
- luogu P4139 上帝与集合的正确用法(扩展欧拉定理)
本蒟蒻现在才知带扩展欧拉定理. 对于任意的\(b\geq\varphi(p)\)有 \(a^b\equiv a^{b\ mod\ \varphi(p)+\varphi(p)}(mod\ p)\) 当\ ...
随机推荐
- 使用 urllib 解析 URL 链接
urllib 库还提供了 parse 模块,它定义了处理 URL 的标准接口,例如实现 URL 各部分的抽取.合并以及链接转换,常用的方法如下: In []: from urllib.parse im ...
- 使用IEDA新建jsp项目以后使用javax.servlet.*报错
新建一个jsp项目,然后再里面配置完了一切写了一个servlet的文件: 点击运行的时候出现了javax程序包不存在的错误,百度了许多都在说是tomcat的事情,吧tomcat/lib下面的servl ...
- iOS - 扩展UIButton的响应区域
扩展UIButton的响应区域 引言 通常在iOS开发中通常会遇到产品说按钮的响应区域不大 而UI给我们的设计是按钮的面积 而不是按钮的响应面积 所以在这种情况下需要我们自己去扩展按钮的响应区域 思考 ...
- Android学习之Gallery
在Android中,画廊控件Gallery用来显示图片列表,可以用手指直接拖动图片左右移动.Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到显示到最 ...
- bootstrapValidator插件动态添加和移除校验
bootstrapValidator对动态生成的表单进行校验,需要调用方法:addField. 方法:addField(field,option); field可以是表单的name也可以是jQue ...
- IOS 怎么用UIScrollView来滚动和缩放他的内容第一篇
本篇文章来自于互联网资料翻译 UIScrollView是在IOS最有用的控件之一.他是一个来展现超过一个屏幕的内容的很好的方式.下面有很多的技巧来使用他. 这篇文章就是关于UIScrollView的, ...
- POJ 3273 Monthly Expense(二分答案)
Monthly Expense Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36628 Accepted: 13620 Des ...
- Artech的MVC4框架学习——第六章Model的验证
第一Model验证旨在为通过Model绑定生成参数进行检验以确保用户输入数据的有效性(p318) 第二Model验证分两种:服务器端(三种解决方案 p256)和客户端(ajax\jQuery) 第三服 ...
- Python中的str与bytes之间的转换的三种方法
# bytes object b = b"example" # str object s = "example" # str to bytes sb = byt ...
- 使用Btrace来动态监控方法的参数和返回值
btrace简介: btrace是一种动态跟踪分析一个运行中的Java应用程序的工具,它基于java的探针技术动态地向目标应用程序的字节码注入追踪代码(字节码追踪),这些追踪字节码追踪代码使用Java ...