所谓快速幂,顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。

熟悉或头文件的人都会知道函数pow()的作用,没错就是计算一个数的几次幂,其定义如下:double pow(double x,double y);

它的功能就是计算x的y次幂,返回值就是所求结果。

举个小例子:

以上就是pow()函数的用法了,当然数字可以换成变量。

对于小范围的幂计算,我们可以直接调用pow()函数来解决,但当数据较大时,一是时间较慢,二是容易溢出。(幂运算还是很容易就溢出的,千万不要小看幂运算的威力,可还记得这张图吗?)

2的200次幂,这个数小编已经不会读了,不知道你们怎么样,这个数太大了,以至于C语言的任何基本数据类型都装不下这个数,这里小编用到了python来计算2的200次幂。(一种支持高精度的语言)

因为幂运算的威力太大了,所以幂运算更多的考的是 a的b次幂取余m 的结果。(a^b%m)

重点来了!!!

快速幂算法用到了分治算法,幂运算的法则相信大家都知道,这里我们要用的只有一条,那就是同底数幂相乘,底数不变,指数相加!!!

我们这里用的是它的逆过程,把一个大的指数拆成若干个较小的指数(两个小的指数相加等于大的指数),然后把它们各自的结果相乘,最终的结果不变。怎么样拆才能尽可能的提高速度呢?答案只有一个,每次拆的子部分尽量相等,这样只需要进行一次计算就好了!

于是,

根据这三种情况我们来写代码就好了,这里同样只写下一个快速幂函数,和pow()一样进行调用就好了!

这样快速幂就写好了。

大家还记得之前提到的 a^b%m 吗?留作思考,开动脑筋想想应该怎么办吧!

c语言快速幂,快速幂相关推荐

  1. 【牛客每日一题】4.16 逆序对 ( 数学 , 排列组合 ,快速幂 , 快速乘 )

    [每日一题]逆序对 链接:https://ac.nowcoder.com/acm/problem/14731 来源:牛客网 题目描述 求所有长度为n的01串中满足如下条件的二元组个数: 设第i位和第j ...

  2. 快速幂----快速求解底数的n次幂

    目录 一.快速幂 1.问题的引入 2.快速幂的介绍 3.核心思想 4.代码实现 二.Pow(x, n) 1.题目描述 2.问题分析 3.代码实现 三.猴子碰撞的方法数 1.题目描述 2.问题分析 3. ...

  3. mysql c语言教程,C语言调用mysql快速教程(精华篇).pdf

    C语言调用mysql快速教程(精华篇).pdf ,使用 语言操作 之前,先在 里头创建一个数据库,一个表,在表里头添加 1 c mysql mysql 数据如下: 创建数据库,库名为 cusemysq ...

  4. Dart语言——45分钟快速入门(下)

    类和对象 类的定义 // Dart中定义一个类 class Person {String name;int age;Person(String name, int age) {this.name = ...

  5. c语言fft乘法步骤,C语言实现FFT(快速傅里叶变换).doc

    C语言实现FFT(快速傅里叶变换) 择蚁牙幸帆揣邓淌港烬粹甩滋整维含兔忿茂慨渔下餐随扼哇房坏鹅穆礼围引介害芝共茨恿把喜恤寇杖除冕嗓停揍猫调锚遭傀个碱晓频斌硕宾撕坪莱哩腊养掘蹄轴国繁蔬虞靡砖焙倍勾呸怀怒 ...

  6. R语言函数定义快速查看

    R语言函数定义快速查看 pycharm查看python方法定义的快捷键很方便 想到过去几年查看R的函数定义都是用method,edit,或直接函数回车.在Rstudio里面这样用效率太低了,设计者肯定 ...

  7. 快速傅里叶变换c语言函数,C语言实现FFT(快速傅里叶变换)

    while(1); } #include #include /********************************************************************* ...

  8. html超文本标记语言初级,超文本标记语言HTML之快速入门HTML简介、HTML入门

    作为准备开始学习ASP.net的新手或者开发Internet应用程序的新手,诸如:PHP.Java等等,最基本的网页编程一定要掌握,新手往往出于急迫的心情与现实的考虑,不少人没有扎实的基础就想直接学习 ...

  9. mysql枫_MySQL_java语言存取mysql快速构建,By 风过留枫, 出处:dujid 环境 - phpStudy

    java语言存取mysql快速构建 By 风过留枫, 出处:dujid 环境: 操作系统: RedHat linux 7.1 mysql服务器: 3.23.36 (linux 7.1附带) mysql ...

  10. C语言之数学计算幂次方

    C语言之数学计算幂次方 1.包含#include "math.h" 2.pow():

最新文章

  1. C#中Delegate和Event以及它们的区别(转载)
  2. Fast_Human_Pose_Estimation_Pytorch
  3. STM32 基础系列教程 47 - MD5
  4. JQuery:全选按钮的实现
  5. js常用reduce方法
  6. 前端开发 常见的网页导航制作 0228
  7. Effective C# 原则42:使用特性进行简单的反射(译)
  8. 如何让sublime编译c语言,如何在Sublime Text 3中编译C程序?
  9. 只需5分钟-----手把手教你如何注册美国AppleId账号
  10. 我的盖洛普“优势识别器”测试报告
  11. 烟雾检测传感器实验-传感器原理及应用实验
  12. c语言错误1083,没有混音设备可用,启动Windows Audio服务时错误1083
  13. 家里wifi网速越来越慢_家里WIFI出现卡顿,网速变慢怎么办?
  14. 微信:用户账号绑定到微信公众号的方法
  15. 数字经济2.0—趋势、逻辑、选择
  16. 平稳信号、非平稳信号
  17. 状态空间平均建模——Flyback
  18. PDF去除数字身份证,完美破解支持打印修改
  19. WinDebug的一些基本使用命令
  20. 财务报表OCR识别技术简介

热门文章

  1. Docker一探究竟
  2. RabbitMQ 使用规范
  3. [I T]深圳唯冠天价律师费遭起诉 补偿金由法院暂管理
  4. 使用腾讯云DNSPod实现动态域名解析DDNS(测试可以用)
  5. 使用 FireDAC的 TFDConnection, TFDQuery 最初只能显示50条记录,TDateSet.RecordCount总是获得50的解决方法。
  6. mysql红黑联盟_MySQL - mysql数据库栏目 - 红黑联盟
  7. 设x、y、t均为int型变量,则执行语句:t=3; x=y=2; t=x++||++y; 后,变量t和y的值分别为
  8. 台式机装苹果系统_AMD台式机装苹果系统!!
  9. 使用 Layui 模板引擎在页面中插入 JS
  10. android service开启前台通知