题解 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)\end{cases} \quad mod \; p\]

然后既然用到了欧拉函数,我们可以用线性筛来求

首先如果\(p\)是质数,\(\phi(p)=p-1\)

如果有\(n\)的最小质因子\(p\),设\(n'= \frac{n}{p}\)且\(p \mid n'\),那么有\(\phi(n)=p \times \phi(n')\) (如果\(n\)除掉一个质因子\(p\)的\(n'\)还有质因子\(p\)那么\(n'\)的质因子集合就是\(n\)的质因子集合,结合欧拉函数的定义式即可)

设\(n\)的质因子集合为\(\{p_1,p_2,p_3 \ldots, p_k\}\),定义\(\phi(n)=n \times \prod_{i=1}^{k}\frac{p_i-1}{p_i}\)(数学归纳法易证)

如果\(p \nmid n'\),那么\(n,n'\)互质,\(p\)又是质数,积性函数性质\(\phi(n)=\phi(p)\times\phi(n')\)

然后\(2^{2^{2^{2^{\ldots}}}}\)这玩意儿显然\(>\phi(p)\),不断递归求解,模数为\(1\)时返回\(0\)即可

注意\(\phi(1)=1\)

#include <cstdio>
using namespace std;
typedef long long ll;
const int maxm = 1e7 + 100;
int vis[maxm],pri[maxm],phi[maxm],pri_tot;
inline void eular(){
    phi[1] = 1;
    for(int i = 2;i < maxm;i++){
        if(!vis[i]){
            pri[++pri_tot] = i;
            phi[i] = i - 1;
        }
        for(int j = 1;j <= pri_tot;j++){
            if(1ll * i * pri[j] >= maxm)break;
            vis[i * pri[j]] = 1;
            if(i % pri[j])phi[i * pri[j]] = phi[i] * (pri[j] - 1);
            else{
                phi[i * pri[j]] = phi[i] * pri[j];
                break;
            }
        }
    }
}
inline ll qpow(ll a,ll b,ll mod){
    a %= mod;
    ll base = a,res = 1;
    while(b){
        if(b & 1)res = (res * base) % mod;
        base = (base * base) % mod;
        b >>= 1;
    }
    return res;
}
inline ll solve(ll mod){
    return mod == 1 ? 0 : qpow(2,solve(phi[mod]) + phi[mod],mod);
}
int t,p;
int main(){
    eular();
    scanf("%d",&t);
    while(t--)scanf("%d",&p),printf("%lld\n",solve(p));
    return 0;
}

原文地址:https://www.cnblogs.com/colazcy/p/11680000.html

时间: 2024-10-13 16:34:18

题解 P4139 【上帝与集合的正确用法】的相关文章

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)+\

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

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

\([题目链接](https://www.luogu.org/problem/P4139)\) 前置芝士 欧拉函数 题目大意:求\(2^{2^{2^...}}\) \(mod\) \(p\)的值. 第一眼看上去好像不可做的样纸,但是我们有一个定理: 当\(b>φ(p)\)时有\(a^b \equiv a^{b \text{ mod } \varphi(p)+\varphi(p)} (\text{mod } p)\) 当\(b<φ(p)\)时,后面就不需要加\(φ(p)\). 那么这题可以看出一

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

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

欧拉函数 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 根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做"元". 第二天, 上帝创造了一个新的元素,称作"α"."α"被定义为"元"构成的集合.容

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

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

【BZOJ3884】【降幂大法】上帝与集合的正确用法

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