好久沒寫題解了啊……其實我並沒有頹廢,只是刷樹形dp去了
沒寫題解的原因…
給定a,b,
ca,b,c
a,b,
c,有a,c
≤109
,b≤1
020000000
a,c\leq10^9, b\leq10^
a,c≤10
9,b≤
1020
0000
00,求a bm
od
ca^b\bmod c
abmodc
單組資料版——lg
多組資料版——vjudge
(話說直接做多組資料版就雙倍經驗了嘛……)
就是:aφ(
m)≡1
(mod
m),(
a,m)
=1
a^\equiv 1\pmod m,(a,m)=1
aφ(m)≡
1(mo
dm),
(a,m
)=1尤拉定理可以用於降冪,可以得到ab=
abmo
dφ(m
)+φ(
m)(m
odm)
(b≥m
)a^b=a^+\varphi(m)}\pmod m(b\geq m)
ab=abm
odφ(
m)+φ
(m)(
modm
)(b≥
m)這道題肯定是用降冪公式啦~(廢話)
首先,因為b
bb是乙個高精數,所以我們要用高模低(兩行**……),求出bmo
dφ(c
)b\bmod \varphi(c)
bmodφ(
c),至於φ(c
)\varphi(c)
φ(c)
,可以用o(n
)o(\sqrt)
o(n
)為什麼有這種**的東西呢?看一下降冪的那一部分,需要滿足b≥m
b\geq m
b≥m,就是有b≥c
b\geq c
b≥c,例如這組資料:2 4 1(lg版),輸出應該是21 mod 4=2,但是這樣做輸出是0,所以如果b≤c
b\leq c
b≤c的話,就可以不用加那個φ(c
)\varphi(c)
φ(c)
了,直接一波上去就好。
1: lg版
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define reg register
#define max(a, b) ( a > b ? a : b )
#define min(a, b) ( a < b ? a : b )
#define abs(a) ( a > 0 ? a : -a )
long
long a, m, p, b;
char c[
20000001];
inline
long
long
phi(
long
long n)}if
(n >
1) res = res / n *
(n -1)
;return res;
}inline
long
long
piow
(long
long a,
long
long b,
long
long mod)
return ans;
}int
main()
cout <<
piow
(a, b + flag * p, m)
<< endl;
}
2:vjudge版
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define reg register
#define max(a, b) ( a > b ? a : b )
#define min(a, b) ( a < b ? a : b )
#define abs(a) ( a > 0 ? a : -a )
long
long a, m, p, b;
char c[
1000001];
inline
long
long
phi(
long
long n)}if
(n >
1) res = res / n *
(n -1)
;return res;
}inline
long
long
piow
(long
long a,
long
long b,
long
long mod)
return ans;
}int
main()
cout <<
piow
(a, b + flag * p, m)
<< endl;
}}
模板 尤拉定理
題目背景 模板題,無背景 題目描述 給你三個正整數,a,m,ba,m,b,你需要求 a b bmod ma bmodm 輸入格式 一行三個整數,a,m,ba,m,b 輸出格式 乙個整數表示答案 輸入輸出樣例 輸入 1 複製 2 7 4 輸出 1 複製 2輸入 2 複製 998244353 12345...
數論 素數 素數相關基礎 尤拉函式與尤拉定理
尤拉定理與尤拉函式在數論方面的應用十分廣泛,幾乎所有的形如a n k 1的東西都可以往上靠。這裡暫時不細說怎麼用,先講基礎內容。1 尤拉函式 尤拉函式 n 表示不超過n且與n互素的正整數的個數 計算公式為 n n 1 1 p1 1 1 p2 其中p1,p2 為n的質因數 2 尤拉定理 若a,n是正整...
尤拉函式 尤拉定理
尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...