二分快速幂

《星空解题家》:二分快速幂——何为二分快速幂?二分思想解题 二分快速幂 分而治之 阅读详情

在a,b为整数时,若 b很大,如 b > 10^25 的时候,我们就要进行优化。

如果b是偶数,则可以看作 a^b = (a^(b/2))^2 ,如果b是奇数,
则 a^b = (a^(b-1)/2)^2。

则有两种方法,一种递归(dfs),一种循环,

递归如下:

int dfs(int a,int b,int mod){//一般幂次方都比较大 所以添加了一个取模运算。
    if(b == 0){//如果为零相当于前一次已经算完 这次使用1返回就可以。
        return 1% mod;
    }
    int temp = dfs(a,b/2,mod);
    temp = temp * temp % mod;
    if(b%2 == 1){//如果为奇数 第一次就开始 然后最后一次又进入 总共两次,如果为偶数 它只进入一次。
        temp = a * temp % mod;
    }
    return temp
}

循环如下:


int a,b;
   int mod = 100999999;
   cin>>a>>b;
   
   int temp = a;
   int ans = 1; //必须为1,否则答案必为0
   for(;b;b/=2){
        if(b&1){//和递归类似,每除一次判断b最后一位是否为0,第一次若最后一位为0,其b为奇数,若不是则为偶数.运算最后一次为1,再进行一次运算.
            ans = a * temp % mod;
        }
        temp = temp * temp % mod;
   }
   
    cout<<ans<<endl;
   

注意:

1、因为数字比较大 尽可能使用  long long 类型;

2、取模运算中,若出现(9-7)%3 如果分开写 9%3 - 7%3 则为 -1,需要加模数,-1+3 = 2;

3、二分快速幂利用了二进制特征 0、1来判断。








分治专题(二分查找与快速幂)     这个大周由于岳老师的一句话,我对程序的认识又有了巨大的改变。人活着不能一成不变,我觉得每天只进步一点点还不够,作为较好的一位,我就需要在相同的的时间内做更多的事情。于是,我就开始预习新知识,复习旧算法,最近我复习了c++的二分这一块,发现之前不会的明显有所提高,大部分都能掌握了,比如说快速幂与二分查找。    快速幂:快速幂运用的是二分思想,这应该是我较先接触的一个重要的算法。虽然说快速幂... 阅读详情

相关推荐

矩阵二分快速幂

经典算法 高效计算快速幂 使用矩阵方式进行计算

二分快速幂(递归版、位运算版)

文章目录引言二分快速幂递归思路二进制循环思路写在后面课后习题50. Pow(x, n)递归二进制372. 超级次方1808. 好因子的最大数目 引言 我们为什么会需要用到快速幂这种算法?试想这样一个场景:题目要求计算254545565254545565254545565的266231331226623133122662313312次幂。如果你还想用循环的方式从定义出发一个一个算,哎呦,你光这一步就得进行266231331226623133122662313312次运算,你不觉得太难受了吗? 二分快速幂 让我

weixin_52314777的博客 861

用Seurat和ComplexHeatmap绘制单细胞marker基因热图:从数据处理到可视化全流程

本文详细介绍了使用Seurat和ComplexHeatmap绘制单细胞marker基因热图的全流程,涵盖从数据处理、基因筛选、平均表达矩阵计算到高级可视化与注释添加。重点解析了如何利用ComplexHeatmap生成发表级热图,并整合热词信息,解决单细胞数据可视化中的常见问题,提升科研图表质量。

weixin_29048775的博客 530

03 快速幂

二分快速幂

xuqw11111的专栏 274

fastjson1.2.83反序列化漏洞

【代码】fastjson1.2.83反序列化漏洞。

Coder的博客 1万+

5G(NR)物理层面试问答

1.什么是参数集(Numerologies)? 答:在5G中由于其频段很宽,设置了不同的子载波带宽,另根据频段、循环前缀、帧结构等组成了参数集。 2.5G中的循环前缀有几种? 答:5G网络支持5种子载波间隔,有两种循环前缀(正常和扩展)。其中:参数集2,即子载波间隔60kHz支持常规循环前缀和扩展循环前缀。 3.5G无线网络在下行(DL)和上行(UL)均使用OFDM波形? 答:5G网络下行链路(DL)和上行链路(UL)使用的波形及处理见下图: 4.5G物理层帧和子帧是多长时间? 答:5G.

starts1990的博客 2378

快速幂(二分幂)——《算法笔记》

一、题目:给定三个正整数a,b,m(),求a^b%m 二、快速幂算法(基于二分法思想): ①如果b是奇数,则; ②如果b是偶数,则 三、递归写法(时间复杂度O(log b)): //求a^b%m,递归写法 long long binaryPow(long long a, long long b, long long m)//long long 类型防止溢出 { i...

一把把把把住了! 816

S型速度曲线C程序实现

S型速度曲线C语言程序实现 前言 S型曲线相较于梯形速度曲线具有运行更加平稳的特点,S型曲线共有八种运行情况,感兴趣可以查阅相关文献 代码段 #include <stdio.h> #include <math.h> #define FP64 double int main(void) { /**************************** 定义相关变量(需要映射到PLC寄存器才能进行监控) ***********************/ FP6

LSX312441548的博客 8392

[解题报告]《算法零基础100讲》(第15讲) 二分快速幂

零、写在前面 这是打卡的第十五天,其中最后一道题之前有写过,今天再次进行一个优化,主要知识点在 《算法零基础100讲》(第14讲) 最小公倍数https://blog.youkuaiyun.com/WhereIsHeroFrom/article/details/121113291https://blog.youkuaiyun.com/WhereIsHeroFrom/article/details/121113291 一、主要知识点 1.二分快速幂 主要利用到的思想就是...

XingleiGao的博客 714

用Python+NumPy手把手实现分数阶傅里叶变换(FRFT),搞定线性调频信号分析

本文详细介绍了如何使用Python和NumPy实现分数阶傅里叶变换(FRFT),特别针对线性调频信号(Chirp信号)分析。通过从零开始的代码实现和可视化案例,展示了FRFT在时变信号处理中的强大能力,帮助工程师和研究人员高效分析频率随时间变化的信号。

weixin_29062823的博客 218

手把手教你用Xilinx SelectIO IP核搞定ADS42LB69高速ADC的DDR数据采集(附仿真调试技巧)

本文详细介绍了如何使用Xilinx SelectIO IP核实现ADS42LB69高速ADC的DDR数据采集,包括IP核配置、仿真验证和硬件调试技巧。通过精准的时序控制和实战调试方法,解决高速数据采集中的时序对齐问题,提升系统稳定性和可靠性。特别适合FPGA工程师和高速ADC接口设计者参考。

weixin_42533622的博客 153

快速幂与二分乘法

快速幂与二分乘法思想:二分法源代码快速幂(非递归)快速幂(递归)二分乘法 思想:二分法 源代码 快速幂(非递归) ll quickmod(ll a,ll b ,ll mod){ ll ans =1; while(b){ if(b&1)ans=ans*a%mod; a = a*a%mod; b>>=1; } return ans; } 快速幂(递归) ll...

antRain的博客 364

python代码实现了一个基于图注意力网络(GAT)和长短期记忆网络(LSTM)的股票成交量预测模型

自定义数据集类:定义了类,继承自。该类用于生成股票数据的时间序列样本,每个样本包含一个长度为seq_length的时间序列和对应的目标成交量。数据加载器:使用DataLoader对数据集进行批量加载,设置批量大小为 64,并开启数据打乱功能。GAT - LSTM 模型:定义了GAT_LSTM类,继承自。该模型结合了 GAT 和 LSTM 两种神经网络:GAT 部分:使用GATConv处理全局图特征,捕获股票之间的相互关系。LSTM 部分:使用nn.LSTM处理时间序列数据,捕捉时间序列的动态变化。

huanghm88的专栏 425

【二分快速幂】pow x-n

大致思路: 温习二分快速幂的写法。注意,n有可能为负数! AC代码: class Solution { public: double pow(double x, int n) { if(n==0) return 1; if(n==1) return x; if(n<0) //注...

It's the Climb 264

用 ABAP 驾驭 OAuth 2.0:从 Authorization Code 到 SAML Bearer 的全栈落地指南

ABAP平台OAuth 2.0客户端开发实践 本文为SAP开发者详细解析ABAP平台内置OAuth 2.0客户端的使用方法,涵盖四种授权流的最佳实践: 授权流选择: Authorization Code:适用于用户交互场景 SAML 2.0 Bearer:适合已有SAML体系的企业 Client Credentials:系统间通信 Password Credentials:过渡方案(不推荐) 配置流程: 通过SE80定义Client Profile 使用SOAUTH2_CLIENT/OA2C_CONFIG配

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

二分三分矩阵快速幂

二分三分矩阵快速幂 2020.2.17 二分法 lower_bound upper_bound(begin,end,val) 返回指针 解决问题 具有单调性/连续性的问题二分查找 最大最小问题/最小最大问题二分答案 小数 规定精度 double l,r,mid; while(right - left > eps)1e-8 mid = (right + left)/2; if(judge...

Leo9344的博客 244

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【二分快速幂】病毒分裂

【问题描述】   A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。  这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期前,一共有多少

cqyz_yuyuko的博客 859

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

二分查找和快速幂

二分查找和快速幂 二分主要考察的是思想、快速幂是递归。 二分: #include <iostream> #include <algorithm> using namespace std; const int maxn = 10; int arr[maxn]; int search(int* arr, int x, int y, int v){ /* 二分思想; ...

cyt 216

【结论】二分快速幂

long long f(long long a,long long b,long long c) { long long ans=1; a%=c; while(b>0) { if(b&1) ans=(ans*a)%c; b>>=1; a=(a*a)%c; } return ans; }

ANG 497
上一篇: 相邻素数对(质数筛选)
下一篇: 二分快速幂应用题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值