c++ 分数取模 乘法逆元
c++ 分数取模 乘法逆元
在C++中,计算分数的取模和乘法逆元可以使用以下方法:
1. 分数取模:
假设要计算 a/b mod n 的结果,其中 a、b、n 都是整数,a和b都不能为负数。
首先,将a和b分别除以n得到的余数记为 a' 和 b'。然后计算 a' * b' 的结果,再将其除以 n 得到最终的取模结果。
例如,想要计算 3/4 mod 5 的结果,先求得 3 mod 5 = 3 和 4 mod 5 = 4,然后计算 3 * 4 = 12,再求得 12 mod 5 = 2,所以 3/4 mod 5 = 2。
2. 乘法逆元:
假设要计算 a 在模 n 下的乘法逆元。乘法逆元是一个整数 x,满足 a * x ≡ 1 (mod n)。
可以使用扩展欧几里得算法来计算乘法逆元。该算法可以按照以下步骤进行计算:
-
初始化两个变量:a' = n,b' = a。
- 初始化两个系数:x' = 0, y' = 1。
- 进入循环直到 b' 为零:
  - 计算商数 q = a' / b'。
  - 更新 a' = b', b' = a' - q * b'。
  - 更新 x' = 上一轮的 y', y' = 上一轮的 x' - q * y'。
- 当循环结束后,最后一轮的 x' 就是所求的乘法逆元。
例如,想要计算 3 在模 7 下的乘法逆元,按照上述步骤运算:
- 初始化 a' = 7,b' = 3,x' = 0,y' = 1。
- 第一轮循环:q = 7 / 3 = 2,更新 a' = 3,b' = 1。
  - 更新 x' = 0, y' = 1 - 2 * 0 = 1。
- 第二轮循环:q = 3 / 1 = 3,更新 a' = 1,b' = 0。
模拟人生3mod放哪
  - 更新 x' = 1,y' = 0 - 3 * 1 = -3。
- 循环结束,所求的乘法逆元为 -3。
注意:在 C++ 中,正数的取模结果为正数,负数的取模结果为负数。因此,如果计算得到的乘法逆元为负数,需要将其加上模数 n,使其为正数。
以上就是在C++中计算分数取模和乘法逆元的方法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。