试出 3 的逆元

C++ 没有 Python 那种 pow(3, -1, 7),先用最笨的办法挨个试: #include <array> #include <iostream> #include <string> #inc

开始练习 →

exgcd 求的是什么

第 1 步:递归:(30, 12) 第 2 步:递归:(12, 6) 第 3 步:递归:(6, 0) 第 4 步:b 为 0:x=1,y=0 第 5 步:回代:x=下一层 y,y=… 第 6 步:回代:x=下一层 y,y=… 第 7 步:3

开始练习 →

exgcd 的递归边界

exgcd 递归到 b == 0 时 x = 1,y =【0】。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x、y;inv_ex(a, p) 用它求逆元。

开始练习 →

exgcd 能顺带求什么

用 exgcd 可以直接求出【0】。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x、y;inv_ex(a, p) 用它求逆元。

开始练习 →

裴蜀定理

方程 a·x + b·y = c 有整数解,当且仅当【0】。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x、y;inv_ex(a, p) 用它求逆元。

开始练习 →

exgcd 求出的 gcd

运行下面这段程序: 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x、y;inv_ex(a, p) 用它求逆元。 #include <array> #in

开始练习 →

补全:递归边界

补全 exgcd 的递归边界:b == 0 时 x=1、y=0。补全后输出 exgcd(30, 12) 求出的 x。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x

开始练习 →

补全:系数回代

补全 exgcd 的回代:y = x1 - (a / b)·y1。补全后输出 30·x + 12·y,应该等于 gcd。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组

开始练习 →

补全:逆元转成非负

补全 inv_ex:exgcd 得到的 x 可能是负数,要转成 0..p-1。补全后输出 3 关于 7 的逆元。 本节模型:exgcd(a, b, x, y) 返回 gcd,并通过引用参数带回 a·x + b·y = gcd 的一组 x、y

开始练习 →

费马求逆元的前提

第 1 步:算 3 的 1~6 次方模 7 第 2 步:3 的 1 次方模 7 第 3 步:3 的 2 次方模 7 第 4 步:3 的 3 次方模 7 第 5 步:3 的 4 次方模 7 第 6 步:3 的 5 次方模 7 第 7 步:3

开始练习 →