【快速幂】算法

ops/2024/11/30 17:24:42/

2024 - 11 - 26 - 第 33 篇 - 算法笔记
C++、快速幂算法
作者(Author): 郑龙浩 / 仟濹(CSDN账号名)

快速幂算法

一、为什么接触这个算法

在做 洛谷P1045 这个算法题的时候,我发现用 普通的高精度算法,依然无法解决大数计算使用内存太大 的问题,然后紧接着接触了压位高精度算法,发现依然还是不能完全解决(也或许我是用压位高精度算法写的该问题代码存在bug吧)。

然后我看题解的时候,发现有大佬使用高精度快速幂解决了该问题,然后我就去学习了一下**【快速幂算法,然后再将高精度算法快速幂算法**结合去做该题。

二、大体思路

b站某up主的视频,看了之后就悟了

https://www.bilibili.com/video/BV16Z4y1M7y1/?share_source=copy_web&vd_source=123565abb60ee9d849adaeb118d98b85

不知道如何清晰的将思路写出来,看了该up主的视频以后,通过该up主的动画我才明白,语言解释太啰嗦了,感觉不如看动画演示来的易懂。

一个很重要的地方就是,要将 10 进制的数字 看做 2 进制去思考,会发现一个很重要的规律

三、代码实现

写了两种方法,思路是相同的,只不过一个是模除运算,一个是位运算

#include <iostream>
using namespace std;// 快速幂算法计算 a^n// 方法1
long long newpow1( long long num, long long n ){long long ans = 1;while( n ){if( ( n & 1 ) == 1 ) ans *= num;num *= num;n >>= 1;}return ans;
}// 快速幂算法计算 a^n// 方法2
long long newpow2( long long num, long long n ){long long ans = 1;while( n ){if( n % 2 == 1 ) ans *= num;num *= num;n /= 2;}return ans;
}int main( void ){cout << newpow1( 2, 22 ) << endl;cout << newpow2( 2, 22 ) << endl;return 0;
}

http://www.ppmy.cn/ops/137981.html

相关文章

24/11/29 Vite

安装nodejs 直接下一步 node.js中自带NPM包(管理js库文件)管理工具 测试NPM命令 npm -v 检查版本 npm config set registry https://registry.npmmirror.com 设置远程仓库 2.安装vite vite是前端服务的工具集 vue团队主持开发 Vite 官网 使用vite安装命令 这个命令是安…

CSS浮动属性

Display 文档流 文档流是文档中可显示对象在排列时所占用的位置/空间 例如&#xff1a;块元素自上而下摆放&#xff0c;内联元素&#xff0c;从左到右摆放 标准流里面的限制非常多&#xff0c;导致很多页面效果无法实现 高矮不齐&#xff0c;底边对齐 空白折叠现象 无论多少…

微信小程序下拉刷新与上拉触底的全面教程

微信小程序下拉刷新与上拉触底的全面教程 引言 在微信小程序的开发中,用户体验至关重要。下拉刷新和上拉触底是提高用户交互体验的重要功能,能够让用户轻松获取最新数据和内容。本文将详细介绍这两个功能的实现方式,结合实际案例、代码示例和图片展示,帮助开发者轻松掌握…

Conda 管理python开发环境

同步发布于我的网站 &#x1f680; 故事起因: 在公司使用Requests多任务并行开发时遇到了问题&#xff0c;使用 ProcessPoolExecutor 时不能正常发出网络请求&#xff0c;会卡在网络请求发不出去&#xff0c;但是善于用 ThreadPoolExecutor 时是可以的,纠结了很久&#xff0c;一…

Docker化部署Django:高效、可扩展的Web应用部署策略

在当今快速发展的Web开发领域&#xff0c;Django以其“快速开发”和“简洁代码”的理念&#xff0c;成为了Python Web框架中的佼佼者。而Docker&#xff0c;作为一种轻量级的容器化技术&#xff0c;为应用的部署和管理提供了极大的便利。本文将探讨Django的优点、Docker部署的好…

antd table 自定义表头过滤表格内容

注意&#xff1a;该功能只能过滤可一次性返回全部数据的表格&#xff0c;通过接口分页查询的请自主按照需求改动哈~ 实现步骤&#xff1a; 1.在要过滤的列表表头增加过滤图标&#xff0c;点击图标显示浮窗 2.浮窗内显示整列可选选项&#xff0c;通过勾选单选或者全选、搜索框来…

Linux基础指令与权限

目录 登录指令 ls指令 pwd指令 cd指令 目录 touch指令 mkdir指令 rmdir 指令 rm指令 man指令 cp指令 mv指令 cat指令 more指令 less指令 head指令 tail指令 date指令 cal指令 find指令 which指令 whereis指令 alias指令 grep指令 zip/unzip指令 r…

《Python基础》之数据加密模块hashlib的用法

目录 一、简介 二、用法 步骤一、导入hashlib库 步骤二、创建哈希对象 步骤三、往哈希对象中传值 1、可以在创建对象的时候传值 2、使用updata传值 步骤四、获取经过哈希对象加密后的值 三、注意事项 1、编码问题 2、安全性 3、多次传值 四、总结 一、简介 hashli…