当前位置: 首页 > news >正文

倍增:快速幂

题目:P1226 【模板】快速幂 - 洛谷

题目概述:求  ?^ ?  % ?等于多少

关键代码分析:

LL qpow(LL a, LL b, LL p)//?的 ?次方 %几 
{
    LL ret = 1;   
    while(b) 
    {
        // b&1 检查当前b的最低位是否为0,就是判断二进制下该位是否有效 
        if (b & 1) ret = ret*a%p;    //如果最低位不是0,就把当前的a乘到结果中然后取模 
        a = a*a%p;     // 将a平方,并对p取模,这对应指数每右移一位,底数就要平方一次 
        b >>= 1;         // 指数 b每次被右移一位(b >>= 1),相当于每次将 b除以2,直到 b变为0。循环次数等于 b的二进制位数,即 ⌊log2​b⌋+1   例如 b=16(二进制10000),循环5次
    }
    return ret;
 } 

总代码:

#include <iostream>using namespace std;typedef long long LL;LL a, b, p;LL qpow(LL a, LL b, LL p)//?的 ?次方 %几 
{LL ret = 1;//ret=1 while(b) {if (b & 1) ret = ret*a%p;a = a*a%p;b >>= 1;}return ret;} int main()
{cin >> a >> b >> p;printf("%lld^%lld mod %lld=%lld",a, b, p, qpow(a, b, p));return 0;
}

时间复杂度:O(log b)

由b >>= 1主导,相当于/2

http://www.dtcms.com/a/457041.html

相关文章:

  • 网站关键词快速排名工具网站建设项目可行性分析
  • 开源AI智能名片链动2+1模式S2B2C商城小程序在现代营销运营中的应用与实践
  • 自然语言处理分享系列-词向量空间中的高效表示估计(二)
  • 开发Bug——U盘插入断网
  • 开源 C++ QT QML 开发(十)通讯--串口
  • BMS(电池管理系统)的主要功能和架构简述
  • asp业务网站视频链接生成器
  • Flask模板中使用React、ant-design、@ant-design/icons示例模板
  • 站长源码之家网络营销中常用的营销策略
  • JAVA算法练习题day35
  • 德州做网站施工企业准则
  • 深圳网站建设十强河北省城乡住房和城乡建设厅网站
  • 数字增量式编码器:工业自动化的“精密神经元”
  • Spring AI-流式编程
  • 手写 Promise.all 的原理与实现
  • 关于windows系统事件查看器的初步理解
  • Linux 线程概念与虚拟地址空间深度解析
  • 一套智慧工地云平台源码,支持监管端、项目管理端,Java+Spring Cloud +UniApp +MySql技术开发
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P05-05 游戏效果委托
  • 音频audio播放两种方式:MediaPlayer和AudioTrack对比
  • K8s学习笔记(十五) pause容器与init容器
  • DVWA靶场之十六:未验证的重定向漏洞(Open HTTP Redirect)
  • 上海网站建设免费推做网站的软件 简单易学
  • 面部情绪识别数据集的介绍和下载
  • Golang中的HTTP请求凝聚器
  • 网站建设多少钱一平米中铁建设集团门户网登陆
  • Linux shell学习(更新中....)
  • 自动生成API文档与故障排查决策树的NLP应用
  • 手机怎么制作钓鱼网站建设文明网 联盟网站的
  • Rust 的类型自动解引用:隐藏在人体工学设计中的魔法