C++知识点总结(35):快速幂

快速幂

  • 一、意义
    • 1. 快速幂
    • 2. 时间复杂度
  • 二、思想
    • 1. 模运算规则
    • 2. 幂的意义
  • 三、程序模板

一、意义

1. 快速幂

快速幂是一种通过快速计算一个数的幂的方法。它主要用于对大数进行幂运算,以减少计算时间。

2. 时间复杂度

将一个数的幂表示为指数表达式,例如 a b a^b ab,其中 a a a 是底数, b b b 是指数。传统的幂运算需要将底数 a a a 乘自身 b − 1 b-1 b1 次,这样的计算复杂度为 O ( b ) O(b) O(b)。快速幂的计算复杂度为 O ( log ⁡ b ) O(\log b) O(logb),相比传统幂运算的 O ( b ) O(b) O(b),可以大大减少计算时间。因此,在需要进行大数的幂运算时,可以使用快速幂方法来提高效率。

二、思想

1. 模运算规则

( a × b ) % p = ( ( a % p ) × ( b % p ) ) % p (a\times b)\%p=((a\%p)\times(b\%p))\%p (a×b)%p=((a%p)×(b%p))%p

2. 幂的意义

  • a b a^b ab 就是将底数 a a a 乘自身 b − 1 b-1 b1 次。例如 3 8 = 3 × 3 × 3 × 3 × 3 × 3 × 3 × 3 3^8=3\times3\times3\times3\times3\times3\times3\times3 38=3×3×3×3×3×3×3×3

  • b b b 为偶数的时候,我们可以进行转变,更加快速地运算,例如: 3 8 = 9 2 3^8=9^2 38=92;当 b b b 为奇数的时候,将多余的数字再相乘就可以了。

三、程序模板

下方展示取后三位的快速幂程序:

#include <iostream>
using namespace std;int x; // 底数 
int n; // 指数 int quickPow(int x, int n)
{int ans = 1; // 累乘器 while (n) // 还未除到0 {if (n % 2 == 1){ans = ans * x % 1000; // 将多余的数提取出来 }n /= 2; // 指数除以2 x = x * x % 1000; // 底数乘本身 }return ans;
}int main()
{int x, n;cin >> x >> n;cout << quickPow(x, n);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS配置应用服务自启动

1、创建服务脚本 cd /etc/systemd/system vim zhhg-service-prod.service 写入&#xff1a; [Unit] Descriptionzhhg-service-prod Afternetwork.target[Service] Typeforking Usermyuser ExecStartsh /home/cloud/zhhg-service-prod/restart.sh ExecStop/bin/kill -TERM $MAI…

Django中model中的抽象类

Django中model中的抽象类 当我们在app中models.py文件中定义model表并执行python manage.py makemigrations和python manage.py migrate后&#xff0c;Django就会在数据库中创建表 但是我们也可以对其默认配置修改&#xff0c;定义model类但是不在数据库中创建 from django.…

暴雨“彩虹”行业大模型加速器平台全新发布

近日&#xff0c;在第七届数字中国建设峰会期间&#xff0c;暴雨信息全新发布“彩虹”行业大模型加速器平台&#xff0c;聚焦于为客户降本增效减负&#xff0c;将海量通用数据与行业特有数据融合&#xff0c;专注于流程工艺的智能化改进&#xff0c;因地制宜深挖业务需求&#…

SpringBoot Hikari数据源的正确配置是这样的

SpringBoot Hikari数据源的正确配置是这样的 1. MySQL数据源配置2. H2数据源配置 spring-boot version: spring-boot-starter:2.6.7 1. MySQL数据源配置 # 数据源配置 spring:datasource:type: com.zaxxer.hikari.HikariDataSourceurl: jdbc:mysql://localhost:3306/db_nameu…

Flink 部署执行模式

一、介绍 Apache Flink 提供了多种部署模式&#xff0c;以适应不同的环境和需求。以下是 Flink 的一些主要部署模式&#xff1a; 1 本地模式&#xff08;Local Mode&#xff09;&#xff1a; Flink 可以在本地机器上以单进程的形式运行&#xff0c;所有任务都将在 JVM 进程中…

软件构造复习1

一、软件构造的多维度视图&#xff1a; 共有三个维度&#xff1a;1.按阶段划分&#xff1a;构造时/运行时视图&#xff0c;2.按动态性划分&#xff1a;时刻/阶段视图&#xff0c;3.按构造对象层次划分&#xff1a;代码/构件视图 具体可如图所示&#xff08;图片来自PPT&#…

信息系统项目管理师0129:输入(8项目整合管理—8.7监控项目工作—8.7.1输入)

点击查看专栏目录 文章目录 8.7 监控项目工作8.7.1 输入8.7 监控项目工作 监控项目工作是跟踪、审查和报告整体项目进展,以实现项目管理计划中确定的绩效目标的过程。本过程的主要作用: 让干系人了解项目的当前状态并认可为处理绩效问题而采取的行动;通过成本和进度预测,让…

mac 系统正确安装nvm

mac 系统正确安装nvm 使用镜像命令 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags配置环境变量&#xff1a; cd ~ vi .zshrc然后将以下信息赋值到文件当中保存&#xff1a; export NVM_…

mybatis 注解式 XML式 通用mapper(tk-mybatis)使用

Jdbc、jpa、mybatis区别 1.Jdbc(java database connectivety)是java数据库连接规范,但由于其使用过于繁琐,出现了ORM(object relative mapping)对象关系映射对jdbc进行了封装,简化了操作,常见的ORM有mybatis、hibernate等 2.JPA(Java Persistence API) &#xff0c;是Sun官方…

内外网文件传输安全可控的方式有哪些?这几款软件值得参考

在信息化时代&#xff0c;随着企业对网络安全和数据保护需求的日益增强&#xff0c;内外网隔离已成为一种常见的网络安全策略。内外网隔离旨在防止未经授权的访问和数据泄露&#xff0c;确保企业网络的安全稳定。然而&#xff0c;在实施内外网隔离的同时&#xff0c;如何实现文…

vue源码之mustache模板引擎1

模板引擎的一个有点&#xff1a;它是将数据转为视图的最优雅的方法 对于下面的数据 [{"name":"小名",age:"12","sex":男},{"name":"小红",age:"12","sex":女},{"name":"小王…

js之-闭包

代码分析 html复制代码<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>对常见闭包的理解…

每日5题Day10 - LeetCode 46 - 50

每一步向前都是向自己的梦想更近一步&#xff0c;坚持不懈&#xff0c;勇往直前&#xff01; 第一题&#xff1a;46. 全排列 - 力扣&#xff08;LeetCode&#xff09; class Solution {//这道题就是一个dfs//把所有结果遍历&#xff0c;到叶子节点就可以添加结果了List<Int…

Java面试题大全(从基础到框架,中间件,持续更新~~~)

从Java基础到数据库&#xff0c;Spring&#xff0c;MyBatis&#xff0c;消息中间件&#xff0c;微服务解决全部Java面试过程中的问题。&#xff08;持续更新~~&#xff09; Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…

消息传递与集成:使用Springboot进行异步通信

消息传递与集成&#xff1a;使用Spring Boot进行异步通信 在现代的分布式系统中&#xff0c;异步通信已经成为了一种常见的设计模式。通过使用消息队列和事件驱动架构&#xff0c;我们可以实现系统之间的解耦&#xff0c;提高系统的可扩展性和可靠性。本文将介绍如何使用Sprin…

汽车防抱死制动系统ABS的单片机程序Proteus仿真设计

次设计对汽车防抱死系统进行简单的设计,针对车速、轮速两个信号进行分析,并根据最佳滑移率计算。采用对比实时滑移率对比分析,ECU控制制动器进行制动力调节使滑移率在制动过程处于最佳范围,保证系统具有良好制动性能。 汽车的制动液压调节器主要包含以下几个部件:调压电磁…

git回退到指定版本,同时提交记录也会删除

第一步&#xff1a; git reset --hard xxx (需要恢复版本的 commit id)第二步&#xff1a;branch_name就是远程分支的名称 git push origin <branch_name> --force

异相(相位不平衡)状态下的合成器效率分析-理论与ADS仿真

异相&#xff08;相位不平衡&#xff09;状态下的合成器效率分析-理论与ADS仿真 12、ADS使用记录之功分器设计中简单介绍了威尔金森功分器的设计方法。一般来讲&#xff0c;功分器反过来就能作为合路器使用&#xff0c;在输入信号相位一致的情况下&#xff0c;各种合路器的效率…

YOLOv8改进 | 卷积模块 | 用DWConv卷积替换Conv【轻量化网络】

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 在YOLOv8的GFLOPs计算量中,卷积占了其中大多数的比列,为了减少计算量,研究人员提出了用DwConv代替Conv。本文给大家带来的教程是将原来的Conv替换为DwConv。文章在介绍主要的原理后,将手把手教学如何进行模…

mySql从入门到入土

基础篇 在cmd中使用MYSQL的相关指令&#xff1a; net start mysql // 启动mysql服务 net stop mysql // 停止mysql服务 mysql -uroot -p1234//登录MYSQL&#xff08;-u为用户名-p为密码&#xff09; //登录参数 mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认1…