我们发现,在int型下使用pow函数求5的三次方,结果为124。

如图:

原因:

pow函数的返回值为double型,因浮点数长度问题,存在截断误差。

解决方法:

将变量定义为double型

有没有更快求幂的方法?

假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b),即是O(n)级别。但快速幂能做到O(logn)的复杂度。

快速幂:

对于二进制的位运算,我们需要用到"&"与">>"运算符,详见位运算符的应用。

先上实现快速幂运算的具体代码:

int qsm(long long m, long long k, long long p)     //(m^k)%p
{long long res = 1, t = m;while (k){if (k&1) res = res * t % p;t = t * t % p;k >>= 1;}return res;
}
LL quickPow(LL a,LL b,LL mod)          //  //(a^b)%mod
{LL res=1;while(b>0){if(b&1)res=(res%mod*a%mod)%mod;b>>=1;a=(a%mod*a%mod)%mod;}return res;
}

其中“b & 1”指取b的二进制数的最末位,如11的二进制数为1011,第一次循环,取的是最右边的“1” ,以此类推。

而“b >>= 1”等效于b = b >> 1,即右移1位,删去最低位。

以a^11为例:

b的二进制数为1011,二进制从右向左算,但乘出来的顺序是 a^(2^0)*a^(2^1)*a^(2^3),是从左向右的。我们不断的让base *= base目的是累乘,以便随时对ans做出贡献。

要理解base *= base这一步:因为base * base == base ^ 2,下一步再乘,就是(base ^ 2) * (base ^ 2) == base ^ 4,然后同理(base ^ 4) * (base ^ 4) == base ^ 8,由此可以做到base → base ^ 2 → base ^ 4 → base ^ 8 → base ^ 16 → base ^ 32.......指数正好是 2 ^ i 。再看上面的例子,a¹¹= (a ^ 1) * (a ^ 2) * (a ^ 8),这三项就可以完美解决了,快速幂就是这样。

pow函数与快速幂(优化)(O(logn)的复杂度)相关推荐

  1. c语言的 pow函数是快速幂吗,leetcode 50. Pow(x, n)(快速幂)

    就是一个二分法快速幂. 但是需要注意的问题是这里是实数,而且n可能为负. int的范围是-2,147,483,648 至 2,147,483,647.如果为-2,147,483,648那么直接n=-n ...

  2. 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  3. AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)

    文章目录 A B C-枚举 D-区间合并模板 E-图论建模,函数图的性质 题意 思路 代码 F-树状数组 题意 思路 代码 G-矩阵快速幂优化dp H-线段树 思路 实现 传送门 本文CSDN 本文j ...

  4. 15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)

    垒骰子 赌圣atm晚年迷恋上了垒骰子,就是把骰子一个垒在另一个上边,不能歪歪扭扭,要垒成方柱体. 经过长期观察,atm 发现了稳定骰子的奥秘:有些数字的面贴着会互相排斥! 我们先来规范一下骰子:1 的 ...

  5. CF989E A Trance of Nightfall(概率+矩阵快速幂优化+倍增)

    CF传送门 洛谷传送门 [题目分析] 在zxy大佬的讲解下终于懂了这道题的做法了qwq... 首先根据题意,出发点不一定在特殊点上,但第一次操作后,之后所有的操作都是在特殊点上,所以先考虑从线上出发的 ...

  6. 【POJ - 3744】Scout YYF I(概率dp,矩阵快速幂优化dp)

    题干: 题目大意: 在一条不满地雷的路上(无限长),你现在的起点在1处.在N个点处布有地雷,1<=N<=10.地雷点的可能坐标范围:[1,100000000]. 每次前进p的概率前进一步, ...

  7. HDU 5863 cjj's string game ( 16年多校10 G 题、矩阵快速幂优化线性递推DP )

    题目链接 题意 : 有种不同的字符,每种字符有无限个,要求用这k种字符构造两个长度为n的字符串a和b,使得a串和b串的最长公共部分长度恰为m,问方案数 分析 : 直觉是DP 不过当时看到 n 很大.但 ...

  8. 【noip2016十连测round3】T3 涂色游戏 【矩阵快速幂优化dp】

    涂色游戏 题解: 推一推公式. 我们让f[i][j]表示第i列有j种颜色的方案总数,k表示i-1列用了多少种颜色,l表示第i列用了多少种没有在i-1列出现的颜色,G(i,j)表示i个格子涂j种颜色的方 ...

  9. Q老师度假(变形矩阵快速幂优化DP)

    问题描述 忙碌了一个学期的 Q老师 决定奖励自己 N 天假期. 假期中不同的穿衣方式会有不同的快乐值. 已知 Q老师 一共有 M 件衬衫,且如果昨天穿的是衬衫 A,今天穿的是衬衫 B,则 Q老师 今天 ...

最新文章

  1. 7.11.4 第一个程序 设置环境变量
  2. 国家电网公司“SG186”工程总部企业门户开发实施
  3. python 合并排序的数组
  4. 那些计算机界的伟大女性
  5. 显示屏连接控制卡超时_小间距led显示屏的安装步骤
  6. 外包物料成本核算时的供应商确定
  7. FPGA基础之逻辑单元(LE or LC)的基本结构
  8. Python Cookbook 3rd Edition Documentation
  9. MyBatis的mapper.xml中对于一个传参的多重判断
  10. electron 爬坑记
  11. 论文笔记_RSS_2014_激光SLAM_LOAM_实时LIDAR定位与建图
  12. 新编c语言程序设计案例教程 pdf下载,新编C语言程序设计教程本科第章.pdf
  13. 计算机一级考试繁体字换成简体字,EXCEL繁简体转换 电脑显示的繁体字改成简体字...
  14. 2021年全球与中国油管线轴行业市场规模及发展前景分析
  15. 肩负移动未来的“LTE”,终端开发遭遇两个壁垒
  16. pdo mysql dsn_使用PDO构造函数连接数据库及DSN详解
  17. 配置一个好看的PowerShell
  18. 天平与天蝎的神话(转)
  19. 第十一次作业 - Alpha 事后诸葛亮
  20. 安装PhotoShop报错 无法写入注册表值请检查权限(错误代码160)

热门文章

  1. boinc gpu项目_BOINC的完整形式是什么?
  2. 【BZOJ 4892】DNA
  3. ogg高版本到低版本同步
  4. 纳什均衡(Nash equilibrium)
  5. 阿联酋esma认证_阿联酋发布ECAS认证计划
  6. 神经网络模型无法正常工作时我们应该做什么(系列)——数据标准化处理(Normalize)
  7. 关于U盘格式化后缩水的解决办法
  8. HTML预格式化文本pre标签
  9. 再谈PINGPONG测试
  10. python槽怎么用_PyQt4信号与槽详解