372. 超级次方

分析

做这题之前,要先背诵过模的运算法则。模运算在对两个数的加、减、乘、指数进行运算时,符合如下规律:

  • (A + B) mod C = (A mod C + B mod C) mod C
  • (A - B) mod C = (A mod C - B mod C) mod C
  • (A * B) mod C = (A mod C * B mod C) mod C
  • A^B mod C = ( (A mod C)^B ) mod C

如何背诵这些法则?观察公式可知,可以按交换律的思路来背诵。将模运算提到四则运算内,并对结果取模。

本文主要用到的是第3条法则。第四条法则看似有用,能用于计算指数运算的模结果,但为了防止溢出,优化的解答会用快速幂的思路来完成指数运算。

公式都参考 https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/modular-multiplication
左栏可以查看加、减、乘、指数下的模运算结果

python的模运算 提到了pow的用法:

内置的 pow() 方法
pow(x, y[, z])
函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。

参考宫水三叶的题解,该题主要是将超级次方分解为如下两个相乘。

比如,对于 a 2314 a^{2314} a2314,可分解为如下:
a 1234 = ( a 123 ) 10 ∗ a 4 a^{1234} = (a^{123})^{10} * a^4 a1234=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值