題解 P5091 模板 尤拉定理

2022-04-29 23:18:12 字數 1003 閱讀 4235

設 \(1\sim n-1\) 中與 \(n\) 互素的 \(\varphi(n)\) 個數 \(x_1,x_2,...,x_\in m_1\),那麼集合 \(m_1\) 為模 \(n\) 的乙個縮系

再設 \(a\cdot x_1,a\cdot x_2,...,a\cdot x_\in m_2\),由於縮系的性質,集合 \(m_2\) 也為模 \(n\) 的縮系

\[\longrightarrow a\cdot x_1\cdot a\cdot x_2\cdot ...\cdot a\cdot x_\equiv x_1,x_2,...,x_(mod\ n)

\]化簡得 \(a^\equiv 1(mod\ n)\)

如何求乙個數的尤拉函式?讓我們先證明另乙個定理。

不少證明 \(\varphi(nm)=\varphi(n)\cdot \varphi(m)\) 都是一句話顯然,所以有興趣的話可以證明上述性質。

然後根據引理,可以在 \(o(\sqrt)\) 的時間內求出乙個數的尤拉函式,這一般在不能線性篩出 \(\varphi\) 函式時使用。

若 \(b<\varphi(m)\),\(a^b\equiv a^b(mod\ m)\)

若 \(b\geq \varphi(m)\),\(a^b\equiv a^(mod\ m)\)

\(b\) 的指數部分可以邊乘邊模,最後對 \(a^b\) 線性求或者快速冪即可

\(code\ below:\)

#include #define ll long long

using namespace std;

ll a,m,b;

inline ll read(ll m)

return x+(f==1?m:0);

}ll phi(ll n)

} if(n>1) ans=ans/n*(n-1);

return ans;

}ll fast_pow(ll a,ll b,ll p)

int main()

P5091 模板 尤拉定理

出題人也想寫有趣的題面,可惜並沒有能力。給你三個正整數,a,m,ba,m,b,你需要求 a b bmod mabmodm 一行三個整數,a,m,ba,m,b 乙個整數表示答案 輸入 1複製 2 7 4 輸出 1複製 2 輸入 2複製 998244353 12345 98765472103312450...

洛谷 P5091 模板 擴充套件尤拉定理

擴充套件尤拉定理 本題要點 1 m 10 8,先求出m的尤拉函式 phm.先求出 m的素因子 p1 pk phm m p1 1 p1 p2 1 p2 pk 1 pk 2 b 是乙個大數,不過這裡需要關注的是 b phm 的值。所以,可以乙個數字乙個數字的讀 累加到一定數量,對 phm求模。3 擴充套...

洛谷 P5091 尤拉降冪

模板題,無背景 給你三個正整數,a,m,b你需要求 a b mod m 輸入格式 一行三個整數,a,m,b 輸出格式 乙個整數表示答案 輸入樣例 1 複製 2 7 4輸出樣例 1 複製 2輸入樣例 2 複製 998244353 12345 98765472103312450233333333333輸...