P4139 上帝与集合的正确用法

P4139 上帝与集合的正确用法

求:

\[2^{2^{2^\cdots}}\bmod p
\]

多测,\(p\le 10^7,T\le 1000\)



扩展欧拉定理基础题,话说昨天晚上证那个定理证了一晚上还没完全弄明白。。。

众所周知,那个公式是:

\[a^n\equiv a^{n\bmod \varphi(p)+\varphi(p)}\pmod p
\]

然后带到这个题的式子里

\[2^{2^{2^\cdots}}\equiv 2^{2^{2^\cdots}\bmod \varphi(p)+\varphi(p)}\pmod p
\]

然后,其中这个指数的\(2^{2^\cdots}\bmod \varphi(p)\)部分,和一开始那个要求的式子形式相同,可以递归地求解,然后在递归的过程中模数不断变小

直到\(p=1\),那么此时答案必为\(0\),结束递归

然后预处理\(\varphi\)就行

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstring>
#define reg register
#define EN std::puts("")
#define LL long long
inline int read(){
	register int x=0;register int y=1;
	register char c=std::getchar();
	while(c<‘0‘||c>‘9‘){if(c==‘-‘) y=0;c=std::getchar();}
	while(c>=‘0‘&&c<=‘9‘){x=x*10+(c^48);c=std::getchar();}
	return y?x:-x;
}
LL phi[10000006];
int prime[1000006],notprime[10000006];
inline void get_phi(){
	int n=1e7;
	phi[1]=1;
	for(reg int i=2;i<=n;i++){
		if(!notprime[i]) prime[++prime[0]]=i,phi[i]=i-1;
		for(reg int j=1;j<=prime[0]&&i*prime[j]<=n;j++){
			notprime[i*prime[j]]=1;
			if(!(i%prime[j])){
				//i mod p=0, phi(i*p)=p*phi(i)
				phi[i*prime[j]]=prime[j]*phi[i];
				break;
			}
			else phi[i*prime[j]]=phi[i]*(prime[j]-1);//i mod p!=0,phi(i*p)=phi(i)*(p-1)
		}
	}
}
inline LL power(LL a,LL b,LL mod){
	LL ret=1;
	while(b){
		if(b&1) ret=ret*a%mod;
		a=a*a%mod;b>>=1;
	}
	return ret;
}
inline LL work(int p){
	if(p==1) return 0;
	return power(2,work(phi[p])+phi[p],p);
}
int main(){
	get_phi();
	int T=read();while(T--) std::printf("%lld\n",work(read()));
	return 0;
}

原文地址:https://www.cnblogs.com/suxxsfe/p/12631583.html

时间: 2024-10-10 23:16:21

P4139 上帝与集合的正确用法的相关文章

Luogu[P4139] 上帝与集合的正确用法(扩展欧拉定理)

一句话题面 求 $ 2^{2^{2^{...}}}  $ \(mod\) $p $ 题解 首先我们要知道什么是扩展欧拉定理: 如果\(b ≥ \varphi(p)\) \(a^b \equiv a^{b \ mod \ \varphi(p)\ +\ \varphi(p)} (mod \ p)\) 可以发现,在这道题中\(a=2\),\(b=2^{2^{2^{...}}}\) 然后我们发现$ 2^{2^{2^{...}}} $ 这玩意是 $ ≥ \varphi(p) $ 的 然后我们知道\(\va

题解 P4139 【上帝与集合的正确用法】

Solution 上帝与集合的正确用法 题目大意:求\(2^{2^{2^{2^{\ldots}}}}mod\;p\) 扩展欧拉定理 首先主角扩展欧拉定理: \[a^b \equiv \begin{cases} a^{b\;mod\;\phi(p)} & gcd(a,p)=1 \\ a^b & gcd(a,b) \neq 1,b < \phi(p) \\ a^{b\;mod\;\phi(p) + \phi(p)} & gcd(a,b)\neq1,b \geq \phi(p)\e

欧拉函数 BZOJ3884 上帝与集合的正确用法

3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 1843  Solved: 862[Submit][Status][Discuss] Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α"."α"被定义为"元"构成的集合.容易

bzoj 3884 上帝与集合的正确用法 指数循环节

3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现

BZOJ 3884(上帝与集合的正确用法-欧拉函数递推找极限)[Template:数论 V2]

3884: 上帝与集合的正确用法 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 523  Solved: 237 [Submit][Status][Discuss] Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α"."α"被定义为"元"构成的集合.容

【BZOJ3884】上帝与集合的正确用法 欧拉定理

[BZOJ3884]上帝与集合的正确用法 Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现,一共有四种不同的“β”. 第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合.显然,一共会有16种不同的“γ

[BZOJ 3884]上帝与集合的正确用法(扩展欧拉定理)

Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现,一共有四种不同的“β”. 第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合.显然,一共会有16种不同的“γ”. 如果按照这样下去,上帝创造的第四种元

BZOJ3884: 上帝与集合的正确用法

Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现,一共有四种不同的“β”. 第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合.显然,一共会有16种不同的“γ”. 如果按照这样下去,上帝创造的第四种元

bzoj P3884 上帝与集合的正确用法

Description 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α”.“α”被定义为“元”构成的集合.容易发现,一共有两种不同的“α”. 第三天, 上帝又创造了一个新的元素,称作“β”.“β”被定义为“α”构成的集合.容易发现,一共有四种不同的“β”. 第四天, 上帝创造了新的元素“γ”,“γ”被定义为“β”的集合.显然,一共会有16种不同的“γ”. 如果按照这样下去,上帝创造的第四种元