算法:快速幂ksm

news/2025/2/22 19:32:31/

为什么使用快速幂:

        假设题目要求求a的b次方。

        c/c++里并没有^运算符,所以我们第一时间可能想到使用for循环,将“a *= a”语句循环b次。但是这样时间复杂度为O(n),所以当b过大的时候,我们的程序将会非常慢,所以我们需要使用快速幂降低他的时间复杂度,时间复杂度为O(log2n)

快速幂写法:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 998244353ll ksm(ll a, ll b)
{//a = 2, b = 13//2^{1101} 13=8+4+1 2^8*2^4*2^1   原理:位运算ll res = 1;while(b){if(b&1)res = res * a % mod;//b&1等价于b%2!=0(位运算,依次比较b与1的二进制位)a *= a%mod;//2^{2^n}b >>= 1;//b>>=1等价于b/=2(位运算,将b的二进制右移一位)}return res%mod;
}int main()
{ll a, b;cin >> a >> b; 	cout << ksm(a, b);return 0;
}

 时间复杂度说明:

例:a = 2, b = 13

遍历了4次:2^2, 2^4, 2^8, 2^16。每次都以2的倍数增长,即{log2n},当指数=16时,执行了4次


http://www.ppmy.cn/news/1271559.html

相关文章

windows11下配置MinGW详细步骤

介绍 MinGW&#xff0c;是Minimalist GNU for Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合&#xff0c;允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时&#xff08;C Runtime&#xff09;库。Mi…

pgsql_postgresql表的继承关系查询

pgsql_postgresql表的继承关系查询 pgsql_postgresql表的继承关系查询前言向上反查表的继承关系SQL系统表说明pg_classpg_namespacepg_inheritspgsql with 语法 pgsql_postgresql表的继承关系查询 前言 表继承是pgsql的一个特性&#xff0c;通过表继承可以方便的实现表数据的…

【EventBus】EventBus源码浅析

二、EventBus源码解析 目录 1、EventBus的构造方法2、订阅者注册 2.1 订阅者方法的查找过程2.2 订阅者的注册过程1. subscriptionsByEventType 映射&#xff1a;2. typesBySubscriber 映射&#xff1a;2.3 总结订阅者的注册过程 3、事件的发送 3.1 使用Post提交事件3.2 使用p…

假如董宇辉是个AI

董宇辉这么质朴、勤奋、爱动感情又有灵气的带货主播&#xff0c;配得上他的上千万粉丝。他是直播带货的一股清流&#xff0c;罕见的品类和物种。 然而&#xff0c;是东方甄选成就了董宇辉&#xff0c;还是董宇辉托起了东方甄选&#xff0c;真是笔说不清的糊涂账。董宇辉为什么…

node-red中输出当前时间

在node-red中输出当前时间&#xff0c;并指定时区为北京时间&#xff0c;时间格式为&#xff1a;YYYY-MM-DD HH:mm:ss 可以使用moment.js库&#xff0c;也可以自行写一个function&#xff0c;介绍一下使用自定义function的方法。 var now new Date(); var formattedDate …

玩转大数据18:大规模数据处理与分布式任务调度

引言 在数字化时代&#xff0c;数据成为了一种宝贵的资源&#xff0c;对于企业和组织来说&#xff0c;如何有效地处理和分析这些数据成为了关键的竞争力。大规模数据处理与分布式任务调度作为大数据处理的核心技术&#xff0c;为解决这一问题提供了有效的解决方案。 随着数据…

laravel的安装

laravel的安装&#xff08;Composer小皮&#xff09; Composer的安装 windows下安装 https://getcomposer.org/Composer-Setup.exe 修改镜像 阿里云&#xff1a; composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 华为云&#xff1a; compos…

Vue3-03-reactive() 响应式基本使用

reactive() 的简介 reactive() 是vue3 中进行响应式状态声明的另一种方式&#xff1b; 但是&#xff0c;它只能声明 【对象类型】的响应式变量&#xff0c;【不支持声明基本数据类型】。reactive() 与 ref() 一样&#xff0c;都是深度响应式的&#xff0c;即对象嵌套属性发生了…