BZOJ 3884 拓展欧拉定理
3884: 上帝与集合的正确用法
Time Limit: 5 Sec Memory Limit: 128 MB
Submit: 4142 Solved: 1907
[Submit][Status][Discuss]
Description

Input
Output
Sample Input
2
3
6
Sample Output
1
4
HINT
欧拉定理
(a , p) 互质
拓展欧拉定理(降幂)
第二个式子不能合并到第三个
定理证明 不会..
解析 由于是2的无限次幂 所以每一层指数肯定大于对应的p 所以直接拓展欧拉定理第三个公式 递归求解phi(phi(phi(...)))) 直到等于1 回朔的时候快速幂求解
复杂度 O(T*log(p)*sqtr(p)) 看起来很大 但是实际上上界是很松的,反正过了。据说打表会超时。
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(a) (a).begin(), (a).end()
#define fillchar(a, x) memset(a, x, sizeof(a))
#define huan printf("\n");
using namespace std;
typedef long long ll;
const int maxn=1e5+,maxm=,inf=0x3f3f3f3f;
ll poww(ll n,ll m,ll mod)
{
ll ans = ;
while(m > )
{
if(m & )ans = (ans * n) % mod;
m = m >> ;
n = (n * n) % mod;
}
return ans;
}
ll phi(ll n) //返回euler(n)
{
ll res=n,a=n;
for(ll i=; i*i<=a; i++)
{
if(a%i==)
{
res=res/i*(i-);//先进行除法是为了防止中间数据的溢出 爆int
while(a%i==)
a/=i;
}
}
if(a>)
res=res/a*(a-);
return res;
}
ll dfs(ll p)
{
if(p==)return ;
ll x=phi(p);
return poww(,dfs(x)+x,p);
}
int main()
{
int t,p;
scanf("%d",&t);
while(t--)
{
scanf("%d",&p);
printf("%lld\n",dfs(p));
}
}
BZOJ 3884 拓展欧拉定理的更多相关文章
- bzoj 3884 欧拉定理
求$$2^{2^{2^{2^{…}}}} mod n$$的值,其中n有1e7. 老实说这题挺有趣的,关键是怎么化掉指数,由于是取模意义下的无限个指数,所以使用欧拉定理一定是可以把指数变为不大于$\va ...
- BZOJ 5394 [Ynoi2016]炸脖龙 (线段树+拓展欧拉定理)
题目大意:给你一个序列,需要支持区间修改,以及查询一段区间$a_{i}^{a_{i+1}^{a_{i+2}...}}mod\;p$的值,每次询问的$p$的值不同 对于区间修改,由线段树完成,没什么好说 ...
- Luogu4139 上帝与集合的正确用法 拓展欧拉定理
传送门 题意:求$2^{2^{2^{2^{...}}}} \mod p$的值.$p \leq 10^7$ 最开始想到的是$x \equiv x^2 \mod p$,然后发现不会做... 我们可以想到拓 ...
- BZOJ3884: 上帝与集合的正确用法 拓展欧拉定理
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...
- BZOJ.3884.上帝与集合的正确用法(扩展欧拉定理)
\(Description\) 给定p, \(Solution\) 欧拉定理:\(若(a,p)=1\),则\(a^b\equiv a^{b\%\varphi(p)}(mod\ p)\). 扩展欧拉定理 ...
- BZOJ 3884: 上帝与集合的正确用法 扩展欧拉定理 + 快速幂
Code: #include<bits/stdc++.h> #define maxn 10000004 #define ll long long using namespace std; ...
- BZOJ 3884 欧拉定理 无穷幂取模
详见PoPoQQQ的博客.. #include <iostream> #include <cstring> #include <cstdio> #include & ...
- BZOJ 3884 上帝与集合的正确用法(扩展欧拉定理)
Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“ ...
- [BZOJ 3884][欧拉定理]上帝与集合的正确使用方法
看看我们机房某畸形写的题解:http://blog.csdn.net/sinat_27410769/article/details/46754209 此题为popoQQQ神犇所出,在此orz #inc ...
随机推荐
- 一行命令杀掉defunct进程
一行命令杀掉defunct进程 今天在杀掉defunc过程中一直搞不完,索性写一行命令,注意先看懂谨慎使用 ps -ef|grep defunct|awk '{print " ps -ef| ...
- JavaScript轮播图
需求: 鼠标移动到下标页码时,也转换到相对应的图片: 多张图片可以自动轮播: 鼠标移动至图片时,停止自动轮播: 可以手动左右调节: <!DOCTYPE html> <html lan ...
- vue 组件名和方法名 重名了,报function错误
vue 组件名和方法名 重名了,报function错误
- stay hungry stay foolish.
I am honored to be with you today at your commencement from one of the finest universities in the wo ...
- python数据类型常用内置函数之字符串
1.strip, lstrip, rstrip x = ' jiahuifeng ' print(x.strip(' ')) print(x.lstrip(' ')) print(x.rstrip(' ...
- Python打包成exe,pyc
D:\mypython\path\ C:\Python27\Scripts\pyinstaller.exe -w mypython.py # Python打包成exe D:\mypython\path ...
- android 图片
1,setCompoundDrawables(Drawable left, Drawable top,Drawable right, Drawable bottom) 设置图片出现在textView, ...
- Spring框架 (log4j :WARN No appenders could be found for logger log4j:WARN Please initialize the log4j system properly.)问题解决
Spring框架需要的jar包 1.Spring压缩包中的四个核心JAR包 beans .context.core 和expression 下载地址: https://pan.baidu.com/s/ ...
- 【讲●解】KMP算法
KMP算法 我们小组负责讲这个... 术语与规定 为了待会方便,所以不得不做一些看起来很拖沓的术语,但这些规定能让我们更好地理解\(KMP\)甚至\(AC\)自动机. 字符串匹配形式化定义如下: 假设 ...
- linux 如何查看硬盘大小,内存大小等系统信息及硬件信息
一.linux CPU大小[root@idc ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuin ...