解题报告 (十五) 扩展欧拉定理

Posted 英雄哪里出来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解题报告 (十五) 扩展欧拉定理相关的知识,希望对你有一定的参考价值。

一、前言

  本文会先给出一系列练习题,读者可以自行思考,或者到对应的 Online Judge 提交自己的代码,当遇到困难时,可以在文章结尾的【解题报告】中找到每一题的解题思路。
  学习更多算法,欢迎扫码关注我们的微信公众号【夜深人静写算法】。

二、本文知识点

1、知识点简述

  • 根据如下公式,可以得到当 b b b 较小的时候直接二分快速幂;当 b b b 非常大的时候采用扩展欧拉定理进行指数降幂以后再进行二分快速幂计算。
  • a b   m o d   c = { a b   m o d   c b < ϕ ( c ) a b m o d    ϕ ( c ) + ϕ ( c )   m o d   c b > = ϕ ( c ) a^{b} \\ mod \\ c = \\begin {cases} a^{b} \\ mod \\ c & { b < \\phi(c)} \\\\ a^{b \\mod \\phi(c) + \\phi(c)} \\ mod \\ c & { b >= \\phi(c)} \\end {cases} ab mod c={ab mod cabmodϕ(c)+ϕ(c) mod cb<ϕ(c)b>=ϕ(c)

2、知识点详述

3、知识点依赖

文章链接难度等级推荐阅读
夜深人静写算法(三)- 初等数论入门★★☆☆☆★★★★☆
夜深人静写算法(三十)- 二分快速幂★☆☆☆☆★★★★★
夜深人静写算法(三十一)- 欧拉函数★★★☆☆★★★★★
夜深人静写算法(三十二)- 费马小定理★★☆☆☆★★★☆☆

三、练习题

1、扩展欧拉定理 + 大数取余

洛谷 P5091 扩展欧拉定理

链接:洛谷 P5091 扩展欧拉定理
题意:给定 a , m , b a,m,b a,m,b,其中 ( a ∈ [ 1 , 1 0 9 ] , m ∈ [ 1 , 1 0 8 ] , b ∈ [ 1 , 1 0 20000000 ] ) (a \\in [1,10^9], m \\in [1, 10^8],b \\in [1, 10^{20000000}]) (a[1,109],m[1,108],b[1,1020000000]),求: a b   m o d   m a^b \\ mod \\ m ab mod m


洛谷 CF17D Notepad

链接:洛谷 CF17D Notepad
题意:你有一个本子,你要往上面写全部的长度为 n n n b b b 进制数字,每一页可以写 c c c 个。要求所有数字必须严格不含前导零。求最后一页上有多少个数字。其中 2 ≤ b < 1 0 1 0 6 2 ≤ b < 10^{10^{6}} 2b<10106 1 ≤ n < 1 0 1 0 6 1 ≤ n < 10^{10^{6}} 1n<10106 1 ≤ c ≤ 1 0 9 1 ≤ c ≤ 10^9 1c109


HDU 4704 Sum

链接:HDU 4704 Sum
题意:给出一个大整数 n ( 1 ≤ n ≤ 1 0 100000 ) n(1 \\le n \\le 10^{100000}) n(1n10100000),求: 2 n   m o d   1000000007 2^n \\ mod \\ 1000000007 2n mod 1000000007

2、扩展欧拉定理 + DFS

洛谷 P4139 上帝与集合的正确用法

链接:洛谷 P4139 上帝与集合的正确用法
题意:给定 p p p,其中 ( p ≤ 1 0 7 ) (p \\le 10^7) (p107),求: 2 2 . . . 2   m o d   p 2^{2^{{...}^2}} \\ mod \\ p 22...2 mod p


HDU 2837 Calculation

链接:HDU 2837 Calculation
题意:令 f ( 0 ) = 1 f(0) = 1 f(0)=1 0 0 = 1 0^0=1 00=1,当 n > 0 n \\gt 0 n>0 时,有: f ( n ) = ( n   m o d   10 ) f ( n 10 ) f(n) = (n \\ mod \\ 10)^{f(\\frac n {10})} f(n)=(n mod 10)f(10n) 给定 ( 2 ≤ n , m ≤ 1 0 9 ) (2 \\le n , m \\le 10^9) (2n,m109),求 f ( n )   m o d   m f(n) \\ mod \\ m f(n) mod m


HDU 3609 Up-up

链接:HDU 3609 Up-up
题意:定义 a ↑ ↑ 1 = a a↑↑1 = a a1=a,且 a ↑ ↑ ( k + 1 ) = a a ↑ ↑ k a↑↑(k+1) = a^ {a↑↑k} a(k+1)=aak,求 a ↑ ↑ k   m o d   100000000 a↑↑k \\ mod \\ 100000000 ak mod 100000000


PKU 2720 Last Digits

链接:PKU 2720 Last Digits
题意:令 f ( x ) = b f ( x − 1 ) f(x) = b^{f(x-1)} f(x)=bf(x1),给定 b b b x x x n ( b ≤ 100 , x ≤ 100 , n ≤ 7 ) n (b \\le 100, x \\le 100, n \\le 7) n(b100,x100,n7),求 f ( x )   m o d   1 0 n f(x) \\ mod \\ 10^n f(x) mod 10n


HDU 3464 Integers’s Weight

链接:HDU 3464 Integers’s Weight
题意:定义函数 w ( x ) w(x) w(x) x x x 各位数字之和,比如 w ( 12097 ) = 1 + 2 + 0 + 9 + 7 = 19 w(12097) = 1+2+0+9+7 = 19 w(12097)=1+2+0+9+7=19,对于任意正整数 x x x,满足如下递归式:
f ( x ) = { 1 w ( x ) = x f ( w ( x ) ) + 1 o t h e r w i s e f(x) = \\begin{cases} 1 & w(x)=x \\\\ f(w(x)) + 1& otherwise \\end{cases} f(x)={1f(w(欧拉函数求和 解题报告

UVA-10054.The Necklace(欧拉回路)解题报告

[poj 2480] Longge's problem 解题报告 (欧拉函数)

[luogu P2586] GCD 解题报告 (莫比乌斯反演|欧拉函数)

cogs2745[济南集训 2017] 求gcd之和解题报告

解题报告_算法题单_索引