转自:点击这里
欧拉降幂公式
\quad
\quad
A
K
≡
A
K
%
ϕ
(
m
)
+
ϕ
(
m
)
(
m
o
d
m
)
A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m)
A K ≡ A K % ϕ ( m ) + ϕ ( m ) ( m o d m )
\quad
\quad
K
>
ϕ
(
m
)
K>ϕ(m)
K > ϕ ( m )
证明
\quad
\quad
A
K
≡
A
K
%
ϕ
(
m
)
+
ϕ
(
m
)
(
m
o
d
m
)
A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m)
A K ≡ A K % ϕ ( m ) + ϕ ( m ) ( m o d m )
\quad
\quad
K
>
ϕ
(
m
)
K>ϕ(m)
K > ϕ ( m )
(
1
)
\quad(1)
( 1 )
若
(
A
,
m
)
=
1
(A,m)=1
( A , m ) = 1 ,根据欧拉定理
A
ϕ
(
m
)
≡
1
(
m
o
d
m
)
A^{ϕ(m)}≡1(mod m)
A ϕ ( m ) ≡ 1 ( m o d m ) ,易证
若
(
A
,
m
)
≠
1
(A,m)≠1
( A , m ) = 1 ,证明如下:
设
K
=
a
∗
ϕ
(
m
)
+
c
a
≥
1
,
0
≤
c
<
ϕ
(
m
)
K=a∗ϕ(m)+c \quad a≥1,0≤c<ϕ(m)
K = a ∗ ϕ ( m ) + c a ≥ 1 , 0 ≤ c < ϕ ( m )
那么欧拉降幂公式就是
\quad
\quad
\quad
A
K
≡
A
a
∗
ϕ
(
m
)
+
c
≡
A
ϕ
(
m
)
+
c
(
m
o
d
m
)
(
2
)
A^K≡A^{a∗ϕ(m)+c}≡A^{ϕ(m)+c}( mod m)\quad(2)
A K ≡ A a ∗ ϕ ( m ) + c ≡ A ϕ ( m ) + c ( m o d m ) ( 2 )
即
\quad
\quad
\quad
A
a
∗
ϕ
(
m
)
≡
A
ϕ
(
m
)
(
m
o
d
m
)
A^{a∗ϕ(m)}≡A^{ϕ(m)}(mod m)
A a ∗ ϕ ( m ) ≡ A ϕ ( m ) ( m o d m )
即
\quad
\quad
\quad
A
2
∗
ϕ
(
m
)
≡
A
ϕ
(
m
)
(
m
o
d
m
)
A^{2∗ϕ(m)}≡A^{ϕ(m)}(mod m)
A 2 ∗ ϕ ( m ) ≡ A ϕ ( m ) ( m o d m )
移项
\quad
\quad
\quad
A
ϕ
(
m
)
(
A
ϕ
(
m
)
−
1
)
≡
0
(
m
o
d
m
)
A^{ϕ(m)}(A^{ϕ(m)}−1)≡0(mod m)
A ϕ ( m ) ( A ϕ ( m ) − 1 ) ≡ 0 ( m o d m )
即
\quad
\quad
\quad
m
∣
A
ϕ
(
m
)
(
A
ϕ
(
m
)
−
1
)
(
3
)
m|A^{ϕ(m)}(A^{ϕ(m)}−1)\qquad\qquad\qquad\qquad(3)
m ∣ A ϕ ( m ) ( A ϕ ( m ) − 1 ) ( 3 )
即
\quad
\quad
\quad
(
m
(
m
,
A
ϕ
(
m
)
,
A
)
=
1
(
4
)
(\frac{m}{(m,A^{ϕ(m)}},A) = 1\qquad\qquad\qquad\qquad(4)
( ( m , A ϕ ( m ) m , A ) = 1 ( 4 )
根据欧拉定理
A
ϕ
(
m
)
≡
A
k
∗
ϕ
(
m
(
m
,
A
ϕ
(
m
)
)
≡
(
A
ϕ
(
m
(
m
,
A
ϕ
(
m
)
)
)
k
≡
1
(
m
o
d
(
m
(
m
,
A
ϕ
(
m
)
)
)
Aϕ(m)≡A^{k*ϕ(\frac{m}{(m,A^{ϕ(m)}})}≡(A^{ϕ(\frac{m}{(m,A^{ϕ(m)}})})^k≡1(mod(\frac{m}{(m,A^{ϕ(m)}}))
A ϕ ( m ) ≡ A k ∗ ϕ ( ( m , A ϕ ( m ) m ) ≡ ( A ϕ ( ( m , A ϕ ( m ) m ) ) k ≡ 1 ( m o d ( ( m , A ϕ ( m ) m ) )
其中
k
≥
1
k≥1
k ≥ 1
移项即得
m
(
m
,
A
ϕ
(
m
)
)
∣
(
A
ϕ
(
m
)
−
1
)
\frac{m}{(m,A^{ϕ(m)})}|(A^{ϕ(m)}−1)
( m , A ϕ ( m ) ) m ∣ ( A ϕ ( m ) − 1 )
同时乘
(
m
,
A
ϕ
(
m
)
)
(m,A^{ϕ(m)})
( m , A ϕ ( m ) )
即
m
∣
(
m
,
A
ϕ
(
m
)
)
∗
(
A
ϕ
(
m
)
−
1
)
m|(m,A^{ϕ(m)})∗(A^{ϕ(m)}−1)
m ∣ ( m , A ϕ ( m ) ) ∗ ( A ϕ ( m ) − 1 )
即
m
∣
A
ϕ
(
m
)
(
A
ϕ
(
m
)
−
1
)
m|A^{ϕ(m)}(A^{ϕ(m)}−1)
m ∣ A ϕ ( m ) ( A ϕ ( m ) − 1 ) (式3)
进行素因子分解
\quad
\quad
A
=
p
1
a
1
∗
p
2
a
2
∗
.
.
.
.
∗
p
t
1
a
t
1
∗
q
1
b
1
∗
q
2
b
2
∗
.
.
.
∗
q
t
2
b
t
2
A=p_{1}^{a_{1}} * p_{2}^{a_{2}}∗....∗p_{t_{1}}^{a_{t_{1}}}∗q_{1}^{b_{1}}∗q_{2}^{b_{2}}∗...∗q_{t_{2}}^{b_{t_{2}}}
A = p 1 a 1 ∗ p 2 a 2 ∗ . . . . ∗ p t 1 a t 1 ∗ q 1 b 1 ∗ q 2 b 2 ∗ . . . ∗ q t 2 b t 2
\quad
\quad
m
=
p
1
c
1
∗
p
2
c
2
∗
.
.
.
.
∗
p
t
1
c
t
1
∗
q
1
d
1
∗
q
2
d
2
∗
.
.
.
∗
q
t
2
d
t
2
m=p_{1}^{c_{1}} * p_{2}^{c_{2}}∗....∗p_{t_{1}}^{c_{t_{1}}}∗q_{1}^{d_{1}}∗q_{2}^{d_{2}}∗...∗q_{t_{2}}^{d_{t_{2}}}
m = p 1 c 1 ∗ p 2 c 2 ∗ . . . . ∗ p t 1 c t 1 ∗ q 1 d 1 ∗ q 2 d 2 ∗ . . . ∗ q t 2 d t 2
\quad
\quad
(
A
,
m
)
=
p
1
m
i
n
(
a
1
,
c
1
)
∗
p
2
m
i
n
(
a
2
,
c
2
)
∗
p
t
1
m
i
n
(
a
t
1
,
c
t
1
)
(A,m)=p_{1}^{min(a_{1},c_{1})}*p_{2}^{min(a_{2},c_{2)}}*p_{t_{1}}^{min(a_{t_{1}},c_{t_{1}})}
( A , m ) = p 1 m i n ( a 1 , c 1 ) ∗ p 2 m i n ( a 2 , c 2 ) ∗ p t 1 m i n ( a t 1 , c t 1 )
(
A
ϕ
(
m
)
,
m
)
=
p
1
m
i
n
(
a
1
∗
ϕ
(
m
)
,
c
1
)
∗
p
2
m
i
n
(
a
2
∗
ϕ
(
m
)
,
c
2
)
∗
p
t
1
m
i
n
(
a
t
1
∗
ϕ
(
m
)
,
c
t
1
)
(A^{ϕ(m)},m)=p_{1}^{min(a_{1}*ϕ(m),c_{1})}*p_{2}^{min(a_{2}*ϕ(m),c_{2)}}*p_{t_{1}}^{min(a_{t_{1}}*ϕ(m),c_{t_{1}})}
( A ϕ ( m ) , m ) = p 1 m i n ( a 1 ∗ ϕ ( m ) , c 1 ) ∗ p 2 m i n ( a 2 ∗ ϕ ( m ) , c 2 ) ∗ p t 1 m i n ( a t 1 ∗ ϕ ( m ) , c t 1 )
欧拉函数
ϕ
(
m
)
=
p
1
c
1
−
1
∗
p
2
c
2
−
1
∗
.
.
.
.
∗
p
t
1
c
t
1
−
1
(
p
1
−
1
)
(
p
2
−
1
)
∗
.
.
.
.
∗
(
p
t
1
−
1
)
ϕ(m)=p_{1}^{c_{1}-1}*p_{2}^{c_{2}-1}∗....∗p_{t_{1}}^{c_{t_{1}}-1}(p_{1}-1)(p_{2}-1)∗....∗(p_{t_{1}}-1)
ϕ ( m ) = p 1 c 1 − 1 ∗ p 2 c 2 − 1 ∗ . . . . ∗ p t 1 c t 1 − 1 ( p 1 − 1 ) ( p 2 − 1 ) ∗ . . . . ∗ ( p t 1 − 1 )
a
i
∗
ϕ
(
m
)
≥
a
i
∗
p
i
c
i
−
1
∗
(
p
i
−
1
)
≥
p
i
c
i
−
1
∗
(
p
i
−
1
)
≥
p
i
c
i
−
1
a_{i}∗ϕ(m)≥a_{i}*p_{i}^{c_{i}-1}*(p_{i}-1)≥p_{i}^{c_{i}-1}*(p_{i}-1)≥p_{i}^{c_{i}-1}
a i ∗ ϕ ( m ) ≥ a i ∗ p i c i − 1 ∗ ( p i − 1 ) ≥ p i c i − 1 ∗ ( p i − 1 ) ≥ p i c i − 1
证明
\quad
\quad
\quad
\quad
\quad
\quad
p
i
c
i
−
1
≥
c
i
p_{i}^{c_{i}-1}≥c_{i}
p i c i − 1 ≥ c i
\quad
\quad
\quad
\quad
\quad
\quad
(
6
)
(6)
( 6 )
若
c
i
=
1
c_{i}=1
c i = 1 ,成立
令
f
(
x
)
=
l
n
(
x
)
x
−
1
f(x)=\frac{ln(x)}{x−1}
f ( x ) = x − 1 l n ( x )
\quad
\quad
\quad
\quad
\quad
在
[
3
,
∞
]
[3,∞]
[ 3 , ∞ ] 单调减
又有
\quad
\quad
\quad
\quad
\quad
f
(
2
)
=
l
n
2
<
2
≤
p
i
f(2)=ln2<2≤p_{i}
f ( 2 ) = l n 2 < 2 ≤ p i
\quad
\quad
\quad
\quad
\quad
f
(
3
)
=
l
n
3
2
<
2
≤
p
i
f(3)=\frac{ln3}{2}<2≤p_{i}
f ( 3 ) = 2 l n 3 < 2 ≤ p i
于是 式子
6
6
6 成立
于是
(
A
ϕ
(
m
)
,
m
)
=
p
1
m
i
n
(
a
1
∗
ϕ
(
m
)
,
c
1
)
∗
p
2
m
i
n
(
a
2
∗
ϕ
(
m
)
,
c
2
)
∗
p
t
1
m
i
n
(
a
t
1
∗
ϕ
(
m
)
,
c
t
1
)
(A^{ϕ(m)},m)=p_{1}^{min(a_{1}*ϕ(m),c_{1})}*p_{2}^{min(a_{2}*ϕ(m),c_{2)}}*p_{t_{1}}^{min(a_{t_{1}}*ϕ(m),c_{t_{1}})}
( A ϕ ( m ) , m ) = p 1 m i n ( a 1 ∗ ϕ ( m ) , c 1 ) ∗ p 2 m i n ( a 2 ∗ ϕ ( m ) , c 2 ) ∗ p t 1 m i n ( a t 1 ∗ ϕ ( m ) , c t 1 )
=
p
1
c
1
∗
p
2
c
2
∗
.
.
.
.
∗
p
t
1
c
t
1
=p_{1}^{c_{1}} * p_{2}^{c_{2}}∗....∗p_{t_{1}}^{c_{t_{1}}}
= p 1 c 1 ∗ p 2 c 2 ∗ . . . . ∗ p t 1 c t 1
于是
\quad
\quad
\quad
(
m
(
m
,
A
ϕ
(
m
)
,
A
)
=
q
1
b
1
∗
q
2
b
2
∗
.
.
.
∗
q
t
2
b
t
2
(\frac{m}{(m,A^{ϕ(m)}},A) =q_{1}^{b_{1}}∗q_{2}^{b_{2}}∗...∗q_{t_{2}}^{b_{t_{2}}}
( ( m , A ϕ ( m ) m , A ) = q 1 b 1 ∗ q 2 b 2 ∗ . . . ∗ q t 2 b t 2
\quad
\quad
\quad
(
m
(
m
,
A
ϕ
(
m
)
,
A
)
=
1
(\frac{m}{(m,A^{ϕ(m)}},A) = 1
( ( m , A ϕ ( m ) m , A ) = 1
\quad
\quad
\quad
\quad
\quad
\quad
式
4
4
4 得证
即
\quad
\quad
m
∣
A
ϕ
(
m
)
(
A
ϕ
(
m
)
−
1
)
m|A^{ϕ(m)}(A^{ϕ(m)}−1)
m ∣ A ϕ ( m ) ( A ϕ ( m ) − 1 )
\quad
\quad
\quad
\quad
\quad
\quad
式
3
3
3 得证
即
\quad
A
K
≡
A
a
∗
ϕ
(
m
)
+
c
≡
A
ϕ
(
m
)
+
c
(
m
o
d
m
)
A^K≡A^{a∗ϕ(m)+c}≡A^{ϕ(m)+c}( mod m)\quad
A K ≡ A a ∗ ϕ ( m ) + c ≡ A ϕ ( m ) + c ( m o d m )
\quad
\quad
\quad
式
2
2
2 得证
即
\quad
\quad
A
K
≡
A
K
%
ϕ
(
m
)
+
ϕ
(
m
)
(
m
o
d
m
)
A^K≡A^{K\%ϕ(m)+ϕ(m)}( mod m)
A K ≡ A K % ϕ ( m ) + ϕ ( m ) ( m o d m )
\quad
\quad
K
>
ϕ
(
m
)
K>ϕ(m)
K > ϕ ( m )
\quad
得证
C
o
d
e
:
Code:
C o d e :
char b[ 1000010 ] ;
ll a, c;
ll quickpow ( ll x, ll y, ll z)
{
ll ans = 1 ;
while ( y)
{
if ( y & 1 )
ans = ans * x % z;
x = x * x % z;
y >>= 1 ;
}
return ans;
}
ll phi ( ll n)
{
ll i, rea = n;
for ( i = 2 ; i * i <= n; i++ )
{
if ( n % i == 0 )
{
rea = rea - rea / i;
while ( n % i == 0 )
n / = i;
}
}
if ( n > 1 )
rea = rea - rea / n;
return rea;
}
int main ( )
{
cin >> a >> b >> c;
ll len = strlen ( b) ;
ll p = phi ( c) ;
ll ans = 0 ;
for ( ll i = 0 ; i < len; i++ )
{
ans = ( ans * 10 + b[ i] - '0' ) % p;
}
ans + = p;
cout << quickpow ( a, ans, c) << endl;
return 0 ;
}