码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 快速幂原理以及python内置pow函数


    目录

    一、前言

    二、快速幂

    (1)先说说pow函数

    (2)快速幂原理

    三、题例

    (1)上链接

    (2)python代码


    一、前言

    对于学计算机的同学来说,学习算法是一件非常重要的事情,废话不多讲,我们来讲讲“快速幂问题”。

    二、快速幂

    显然Python语言可以不用背快速幂模版,因为自带的pow函数速度已经比快速幂还快了。

    但我们仍需要理解原理,因为可能会遇到变种题。

    (1)先说说pow函数

    描述:

    pow() 方法返回 x^y(x的y次方) 的值。

    语法:

    以下是 math 模块 pow() 方法的语法:

    import math

    math.pow( x, y )

    内置的 pow() 方法:

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

    注意:

    pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

    参数:
    x -- 数值表达式。
    y -- 数值表达式。
    z -- 数值表达式。

    返回值:
    返回 x^y(x的y次方)的值。

    实例:
    以下展示了使用 pow() 方法的实例:

    1. import math # 导入 math 模块
    2. print ("math.pow(100, 2) : ", math.pow(100, 2))
    3. # 使用内置,查看输出结果区别
    4. print ("pow(100, 2) : ", pow(100, 2))
    5. print ("math.pow(100, -2) : ", math.pow(100, -2))
    6. print ("math.pow(2, 4) : ", math.pow(2, 4))
    7. print ("math.pow(3, 0) : ", math.pow(3, 0))

    以上实例运行后输出结果为:

    1. math.pow(100, 2) : 10000.0
    2. pow(100, 2) : 10000
    3. math.pow(100, -2) : 0.0001
    4. math.pow(2, 4) : 16.0
    5. math.pow(3, 0) : 1.0

    (2)快速幂原理

    直接看代码就可以明白。

    1. def power(base,exponent): # base : 底数 / exponent : 指数
    2. res = 1
    3. while exponent:
    4. if exponent & 1: # 判断当前的最后一位是否为1,如果为1的话,就需要把之前的幂乘到结果中。
    5. res *= base
    6. base *= base # 一直累乘,如果最后一位不是1的话,就不用了把这个值乘到结果中,但是还是要乘。
    7. exponent = exponent >> 1
    8. return res

    三、题例

    (1)上链接

    P1226 【模板】快速幂||取余运算 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

    (2)python代码

    1. # 这个方法不能过全部数据,部分会超限
    2. a,b,p=map(int,input().split())
    3. base=a
    4. ex=b
    5. res=1
    6. # print(a," ",b," ",p," ",res)
    7. while b:
    8. if b&1:
    9. res=(res*a)%p
    10. a*=a
    11. b=b>>1
    12. # print(a," ",b," ",p," ",res)
    13. print("{}^{} mod {}={}".format(base,ex,p,res))
    14. # 下面的方法能过
    15. # 用python自带的pow函数速度比上面的快速幂代码快多了
    16. a,b,p=map(int,input().split())
    17. print("{}^{} mod {}={}".format(a,b,p,pow(a,b,p)))

    以上,快速幂

    祝好

     

  • 相关阅读:
    万字长文,带你轻松学习 Spark
    制作一个简单HTML校园网页(HTML+CSS)学校网站制作 校园网站设计与实现
    【电动车优化调度】基于模型预测控制(MPC)的凸优化算法的电动车优化调度(Matlab代码实现)
    java开发实际场景之两个map相加
    思科设备BGP配置命令
    2022字节跳动Byte Camp夏令营:53所国内外高校学员云端完成24个项目
    【window下配置Maxim SDK环境】
    【计算机毕业设计】092基于微信小程序二手闲置交易市场
    Pre-trained Language Models Can be Fully Zero-Shot Learners
    个人信用风险评估项目
  • 原文地址:https://blog.csdn.net/m0_52711790/article/details/127452561
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号