我是靠谱客的博主 清新发夹,这篇文章主要介绍快速幂原理以及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
2
3
4
5
6
7
8
import math # 导入 math 模块 print ("math.pow(100, 2) : ", math.pow(100, 2)) # 使用内置,查看输出结果区别 print ("pow(100, 2) : ", pow(100, 2)) print ("math.pow(100, -2) : ", math.pow(100, -2)) print ("math.pow(2, 4) : ", math.pow(2, 4)) print ("math.pow(3, 0) : ", math.pow(3, 0))

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

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

(2)快速幂原理

直接看代码就可以明白。

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

三、题例

(1)上链接

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

(2)python代码

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

以上,快速幂

祝好

 

最后

以上就是清新发夹最近收集整理的关于快速幂原理以及python内置pow函数一、前言二、快速幂三、题例的全部内容,更多相关快速幂原理以及python内置pow函数一、前言二、快速幂三、题例内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部