Skip to content

模运算(十三)

About 597 wordsAbout 2 min

algo

2024-06-10

参考灵神在力扣上面的文档分享:分享丨模运算的世界:当加减乘除遇上取模

具体的内容可以到灵神的分享里面查看,这里只做简单的总结:

加法、乘法取模

加法: (a+b) mod m = ((a mod m) + (b mod m)) mod m

乘法: (a*b) mod m = ((a mod m) * (b mod m)) mod m

负数取模

为避免 x mod m < 0 可以写成:(x mod m + m ) mod m

除法取余

太复杂了,略过。

总结

快速幂相关题目

50. Pow(x, n)

分治角度

x2=xn2xn2=(x2)n2x^2 = x^{\frac{n}{2}} * x^{\frac{n}{2}} = (x^2)^{\frac{n}{2}}

令 n/2 为整数,则需要分为偶数和奇数两种情况:(数学公式里面不要直接写中文,容易解析不了)

xn={(x2)n2,n%2==0x(x2)n2,n%2==1x^n =\begin{cases} (x^2)^{\frac{n}{2}}, n\%2 == 0 \\ x * (x^2)^{\frac{n}{2}}, n\%2 == 1 \end{cases}

观察发现,当 n 为奇数的时候,二分出来会多出来一项,

算法流程:

  • 当 x=0.0 时,直接返回 0
  • 初始化 res=1
  • 当 n<0 时把问题转化成 n>=0 的情况,即执行 x= 1/x, n = -n
  • 循环计算:当 n=0 是跳出,
    • 当 n%2 == 1 时,将当前 x 乘入 res,即 res *= x
    • 执行 x *= x
    • 执行 n 右移一位。
Java

2961. 双模幂运算

这个题主要是要写好 pow(x, n, mod)的方法

Java

Changelog

Last Updated: View All Changelog
  • feat(wiki): algo: 算法总结

    On 3/30/25

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!