首页 > 其他分享 >快速幂

快速幂

时间:2024-07-03 17:19:49浏览次数:8  
标签:lceil 12 log int times ans 快速

快速幂

快速幂,是一个在 $\Theta(\log n)$ 的时间内计算 $a^n$ 的小技巧。

对于 $n$ ,它有 $\lceil \log n\rceil$ 个二进制位,那么我们只需要进行 $\log n$ 次的乘法就可以计算出 $a^n$。

例如计算 $4^{12}$,我们将 $12$ 改写为二进制形式:$(1100)_2$,那么 $4^{12}$ 就等于:
$$
4{12}=4\times 4^{1\times 2^2}\times 4^{0\times 2^1}\times 4^{0\times 2^0}
$$
也就是:
$$
4{12}=4\times 4^{1\times 2^2}\times 1\times 1
$$
所以最终的答案就只是 $4^{1\times 2^3}$ 与 $4^{1\times 2^2}$ 相乘。而 $4{23}$ 只需要靠 $4{22}\times 4$ 来获得即可。由此可以得出思路:进行 $\lceil \log n\rceil$ 次乘 $a$ 的运算,当这一位的 $n$ 为 $1$ 的时候,将答案与此时的 $a$ 相乘即可。

代码如下:

int power(int a,int b){
	int ans=1;
	while(b){
		if(b&1)
			ans=ans*a;
		b>>=1;
		a*=a;
	}
	return ans;
}

标签:lceil,12,log,int,times,ans,快速
From: https://www.cnblogs.com/wxdd233/p/18282223

相关文章

  • 三种简单的PDF文件快速压缩方法
    在日常工作中,我们经常会遇到需要发送或上传PDF文件的情况。然而,PDF文件往往会占用较大的存储空间,给我们的文件管理和传输带来了一定的困扰。因此,学会pdf压缩怎么弄就显得尤为重要了。接下来,我们将介绍四种简单有效的方法,帮助你轻松解决PDF文件压缩的问题。方法一、使用在线pdf压......
  • Vue3快速上手
    好久没上传了,闲来无事把囤积已久的笔记给上传上传1.Vue3简介2020年9月18日,Vue.js发布版3.0版本,代号:OnePiece(n经历了:4800+次提交、40+个RFC、600+次PR、300+贡献者官方发版地址:Releasev3.0.0OnePiece·vuejs/core截止2023年10月,最新的公开版本为:3.3.41.1.......
  • 想快速提升写作效率?从ai写作到降ai率,这5款免费AI工具帮你搞定全程!
    在日常工作和生活中,我经常使用各种各样的人工智能工具,如AI写作助手、AI语音助手和AI绘图工具等。这些AI工具显著提升了我的工作效率,并极大地简化了我的日常任务。作为一名AI工具的忠实爱好者,我搜集了许多免费的AI工具,并发现它们特别适合国内用户使用。今天,我想分享一些我经常......
  • 视频转文字怎么提取?快速转换技巧全攻略
    经常有同学问俺,如何能够将视频在线转文字。无论是因为网课节奏过快难以跟上,还是出于为宣传视频添加字幕的需求......所以今天就向大家分享3个能够高效提取视频文字的工具,并提供详细的操作指南,确保每个人都能轻松掌握视频文字提取技巧。▎借助工具一:录音转文字工厂使用端口:......
  • 面试:10亿数据如何最快速插入MySQL?
    转载:https://mp.weixin.qq.com/s/kL1srP3FZjaTSXLULsUS5g 最快的速度把10亿条数据导入到数据库,首先需要和面试官明确一下,10亿条数据什么形式存在哪里,每条数据多大,是否有序导入,是否不能重复,数据库是否是MySQL?假设和面试官明确后,有如下约束10亿条数据,每条数据1Kb数据内容......
  • 快速启动软件 -- Lucy v1.8.6
    软件简介Lucy快速启动是一款旨在提高用户操作效率的桌面快捷启动软件。它具有轻量级、简洁、实用的特点,主要功能是帮助用户快速打开已安装的应用程序、文件、文件夹以及网址。Lucy快速启动的特点包括:小巧体积:软件体积小,只有1MB左右,对系统资源占用极低。无广告:提供一个无广......
  • Google 发布了最新的开源大模型 Gemma 2,本地快速部署和体验
    Gemma2是Google最新发布的开源大语言模型。它有两种规模:90亿(9B)参数和270亿(27B)参数,分别具有基础(预训练)和指令调优版本,拥有8KTokens的上下文长度:Gemma-2-9b:90亿参数基础模型版本Gemma-2-9b-it:90亿参数基础模型的指令调优版本Gemma-2-27B:270亿参数基础模型版本G......
  • vagrant + vbox快速搭建虚拟机
    版本适配很重要vagrant :1.9.7 链接:https://pan.baidu.com/s/12J29q7aK02th9TmgIm6cpw 提取码:93mxvirtualbox:5.1.38 链接:https://pan.baidu.com/s/19ojU2284QvQXrAxyeRf8eA 提取码:b6jg1.先做一个boxvagrant box add centos7  CentOS-7-x86_64-Vagrant-1801_02.Virt......
  • 2.SpringBoot快速上手
    2.SpringBoot快速上手SpringBoot介绍javaEE的开发经常会涉及到3个框架Spring,SpringMVC,MyBatis.但是这三个框架配置极其繁琐,有大量的xml文件,springBoot对之前的配置进行极大的简化SpringBoot是由Pivotal团队提供的基于Spring的全新框架,简化Spring应用的初始搭建和开发过......
  • MyBatis是什么以及为什么需要ORM框架、快速搭建
    MyBatis是什么MyBatis的前身是Ibatis,本质是一款半自动化的ORM框架,除了能对POJO进行ORM映射之外,还可以编写SQL脚本语句。主要是为了解决我们平时开发中经常写的JDBC代码,将繁琐的JDBC代码封装起来,化繁为简。MyBatis映射文件四要素:1.SQL语句2.映射规则3.POJO4.Mapper接口为......