取模运算与快速幂

取模运算的一些性质

( 𝑎 ± 𝑏 )%𝑝 = 𝑎%𝑝 ± 𝑏%𝑝 %𝑝
(𝑎 × 𝑏) %𝑝 = ((𝑘1𝑝 + 𝑎0 )× (𝑘2𝑝 + 𝑏0 )%𝑝) = 𝑎0 × 𝑏0 %p
即 • (𝑎 × 𝑏) %𝑝 = (𝑎%𝑝 )× (𝑏%𝑝) % p
(1015 * 1016)%(109 + 7) ,直接运算会爆long long,要用取模运算的运算规则

快速幂

计算 𝑎𝑏 mod 𝑝 的结果 0 < 𝑎, 𝑏, 𝑝 ≤ 109
• 如果直接循环计算,则需要 𝑂(𝑏) 的复杂度,会TLE
引入分治的思想
分治
每次可以将b除2,复杂度O(logb)
和矩阵的快速幂思路完全相同。

long long qpow(long long a,long long b,long long p)
{ 
 long long ans = 0;
 for(a %=p;b;a = a*a %p,b >>=1)
 if(b & 1)
 ans = ans *a % p;
 return ans;
 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值