C++快速幂
2024-10-21 06:02:13
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;
}
最新文章
- jQuery链式操作[转]
- sql数据库获取表名称和表列名
- cocos2dx 3.x tolua 分析
- 【Git】笔记2
- SVN组成中trunk,branches and tags功能用法详解
- 2016年12月1日 星期四 --出埃及记 Exodus 20:22
- 用java实现冒泡排序法
- WPF中XAML转义字符
- 【转】centos 6.4 samba 安装配置
- tyvj P1864 [Poetize I]守卫者的挑战(DP+概率)
- [转] 智能指针(三):unique_ptr使用简介
- Android:Service的注意点以及一些知识点
- SQLSERVER数据库学习总结七(视图,索引)
- JWebFileTrans: 一款可以从网络上下载文件的小程序(一)
- 进入PE后不显示硬盘的解决办法
- Spring Cloud 2-RabbitMQ 集成(八)
- 错误: after element list
- 排序算法之冒泡排序的思想以及Java实现
- ueditor 编辑器常用方法
- Mysql数据约束 整理
热门文章
- 2020年12月-第02阶段-前端基础-CSS Day06
- Fluentd 使用 multiline 解析器来处理多行日志
- mysql8.0.25版本设置主从数据库,并且从库只读
- Elasticsearch: analyzer
- 配置Kubelet的垃圾回收
- logstash另类输出到es
- 使用Jumpserver堡垒机管理MySQL应用
- 初试 Centos7 上 Ceph 存储集群搭建
- Qemu/Limbo/KVM镜像 Ubuntu 22.04 精简版,可运行Windows软件,内存占用不到200M
- POJ1741 tree (点分治模板)