首页 > 其他分享 >快速幂

快速幂

时间:2022-11-21 12:26:52浏览次数:53  
标签:int long base ans 快速 mod

title: 快速幂
date: 2022-11-16 05:45:26
tags: 算法

本文章遵守知识共享协议 CC-BY-NC-SA ,转载时需要署名,推荐在我的个人博客阅读。

快速幂

前置知识

  • 位运算

讲解

快速幂是一种快速进行幂运算的算法

不使用快速幂的幂运算代码:

int pow(int a,int p){
    int ans = a;
    for(int i=1;i<=p;i++)
        ans*=a;
    return ans;
}

容易看出,该代码的时间复杂度为 O(p) ,而优化方法则是使用二进制的方法,枚举二进制每一位。

int pow(int a,int p){
	int ans = 1,base = a;
    while(p){
        if(p&1)
            ans*=base;
        p>>=1;
        base*=base;
    }
    return ans;
}

因为此算法枚举 p 的每一位二进制位,所以时间复杂度为 O(log p)
所以效率优于普通快速幂

关于取模

取模可以在这些地方进行:

int pow(int a,int p,int mod){
	int ans = 1,base = a;
    while(p){
        if(p&1)
            ans=(ans*base)%mod; // 这里
        p>>=1;
        base=(base*base)%mod; // 这里
    }
    return ans%mod; // 这里
}

例题

P1226-【模板】快速幂||取余运算

纯板子,直接打就行。

一定!一定!!一定!!!要开 long long !(我不说是谁 CSP-S 2022 没开 long long 导致挂掉的)

标签:int,long,base,ans,快速,mod
From: https://www.cnblogs.com/rickyxrc/p/16911029.html

相关文章

  • 深度学习框架新手快速上手指南
    新手入门深度学习框架怎么办?快速、可拓展、易于使用且支持自动求导的深度学习框架-MegEngine配备了新手入门文档,助力初学者快速上手框架。文档借助了一系列的代码实战,有利......
  • 快速构建页面结构的 3D Visualization
    对Chrome扩展功能熟悉的小伙伴,可能都有用过Chrome的3D展示页面层级关系这个功能。可以通过控制台-->右边的三个小点-->MoreTools-->Layers打开。即可以看......
  • 快速了解员工脉动调查
    什么是员工脉动调查?脉动调查是在相对频繁的基础上进行的一系列简短的问题,旨在跟踪一段时间内对某个问题或话题的反应。通常在网上进行,员工脉动调查让参与者可以选择在电脑......
  • JavaScript基础快速复习
    目录学习信息01初识JavaScript浏览器执行JS过程JS的组成JS初体验JS的注释02JavaScript输入输出语句03变量变量概述变量的使用变量的语法扩展变量的命名规范04数......
  • 分块快速入门
    基本思想有一句老话,叫“大段维护,局部朴素”。其实就是将一些东西人为的分为若干块,然后每个块整体的维护一些东西,小范围内直接暴力做,做到时空平衡。其实和根号分治有点像......
  • [排序算法] 快速排序 (C++) (含三种写法)
    快速排序解释快速排序QuickSort与归并排序一样,也是典型的分治法的应用。(如果有对归并排序还不了解的童鞋,可以看看这里哟~归并排序)❤❤❤快速排序的分治模式1、......
  • 用友NC产品接口开发,通过轻易云数据集成平台快速调用
    通过用友NC产品的UAPV63平台、插件相关处理、相关业务逻辑处理课程目标与要求课程内容课程目标与要求业务逻辑处理外部系统信息设置节点新建外部系统默认匹配规则:仅按对照......
  • EBS 基础概念:快速编码
    方法3:根据当前会话的SID使用SQL查询步骤1.进入FORM界面,然后通过帮助里面的关于,查找到当前会话的SID。步骤2.在FORM中打开对应的LOV字段,进行LOV查找操作。步骤3.执行以......
  • 用友NC产品接口开发,通过轻易云数据集成平台快速调用
    通过用友NC产品的UAPV63平台、插件相关处理、相关业务逻辑处理课程目标与要求课程内容课程目标与要求业务逻辑处理外部系统信息设置节点新建外部系统默认匹配规则:仅按对......
  • 使用SQL快速插入100000条数据
    DELIMITER//#使用delimiter关键字//createproceduretest()#创建存储过程begindeclareiintdefault0;#声明一个默认值为0的局部变量iwhilei<100000do#......