C++快速幂


快速幂的作用:

当我们做一些高次幂的计算时,就不能直接进行暴力的计算。例如:需要计算2^n

并且n≤10^18。这时候如果我们直接进行暴力的计算,时间复杂度为O ( n ),那么肯定会超时,这时候我们就需要一些更优美的算法来帮我们解决这个问题。

快速幂的思路:

首先我们要明确一点,对于一个m^n, 当n为偶数时m^n= (m^2 )^n/2

如果知道了这一点我们的问题就迎刃而解了。

求解x^k。

定义:x为当前的底数,f为临时存放处。

当k为偶数时,x*= x , k / = 2

当k为奇数时,k−− , f*= x,然后再以k为偶数的情况进行计算。

代码实现:

int quickpow(int n,int k) {
long long x=n,f=1;
while(k>1) {
if(k%2==1){
k--;
f*=x;
}
x*=x;
k/=2;
}
return x*f;
}

最新文章

  1. jQuery链式操作[转]
  2. sql数据库获取表名称和表列名
  3. cocos2dx 3.x tolua 分析
  4. 【Git】笔记2
  5. SVN组成中trunk,branches and tags功能用法详解
  6. 2016年12月1日 星期四 --出埃及记 Exodus 20:22
  7. 用java实现冒泡排序法
  8. WPF中XAML转义字符
  9. 【转】centos 6.4 samba 安装配置
  10. tyvj P1864 [Poetize I]守卫者的挑战(DP+概率)
  11. [转] 智能指针(三):unique_ptr使用简介
  12. Android:Service的注意点以及一些知识点
  13. SQLSERVER数据库学习总结七(视图,索引)
  14. JWebFileTrans: 一款可以从网络上下载文件的小程序(一)
  15. 进入PE后不显示硬盘的解决办法
  16. Spring Cloud 2-RabbitMQ 集成(八)
  17. 错误: after element list
  18. 排序算法之冒泡排序的思想以及Java实现
  19. ueditor 编辑器常用方法
  20. Mysql数据约束 整理

热门文章

  1. 2020年12月-第02阶段-前端基础-CSS Day06
  2. Fluentd 使用 multiline 解析器来处理多行日志
  3. mysql8.0.25版本设置主从数据库,并且从库只读
  4. Elasticsearch: analyzer
  5. 配置Kubelet的垃圾回收
  6. logstash另类输出到es
  7. 使用Jumpserver堡垒机管理MySQL应用
  8. 初试 Centos7 上 Ceph 存储集群搭建
  9. Qemu/Limbo/KVM镜像 Ubuntu 22.04 精简版,可运行Windows软件,内存占用不到200M
  10. POJ1741 tree (点分治模板)