首页 > 其他分享 >快速幂!!!

快速幂!!!

时间:2024-12-30 10:28:50浏览次数:9  
标签:return res ll while mod 快速 define

一、适用情况

求a的b次方(a ^ b);

如果b的值非常大,可以使用快速幂来降低时间复杂度;

时间复杂度为O(log b);

二、逻辑原理

当 b 为偶数时,a ^ b == a ^ ( b / 2 ) ^ 2 == ( a ^ 2 ) ^ ( b / 2 ),依据这个可以完成 b 的二次下降;

当 b 为奇数时,a ^ b == a * a ^ ( b - 1 ) ,此时,b - 1 为偶数;(相当于把奇数转换为偶数);

三、代码实现 

快速幂代码

#define mod 998244353 // 一般指数运算太大  题目一般会要求mod

ll qpow(ll a , ll b ){
    ll res = 1;
    while(b){
        if(b & 1) res = res * a % mod; // b 依次除以2 , 最后一定会为 1 , 此时可以将 a 乘到 res 上
        a = a * a % mod; 
        b >>= 1; // 位运算 等价于 b /= 2;
    }
    return res;
}

可以测试的全部代码 

#include <bits/stdc++.h>
using namespace  std;
#define ll long long
#define mod 998244353 // 一般指数运算太大  题目一般会要求mod

ll qpow(ll a , ll b ){
    ll res = 1;
    while(b){
        if(b & 1) res = res * a % mod; // b 依次除以2 , 最后一定会为 1 , 此时可以将 a 乘到 res 上
        a = a * a % mod; 
        b >>= 1; // 位运算 等价于 b /= 2;
    }
    return res;
}

void solve(){
    ll a,b;
    cin >> a >> b;
    cout << qpow(a,b) << endl;
}

signed main(){
    ll t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

标签:return,res,ll,while,mod,快速,define
From: https://blog.csdn.net/2401_87239144/article/details/144805256

相关文章

  • SpringBoot整合Thymeleaf与Bootstrap5:快速构建导航栏并抽取公共代码-幽络源
    教程概述在SpringBoot中整合Thymeleaf、Bootstrap5快速的完成一个页面中导航栏的展示实现,看了本篇文章,相信后续结合这三种框架,快速开发其他页面也会如鱼得水。原文链接:SpringBoot整合Thymeleaf与Bootstrap5:快速构建导航栏并抽取公共代码创建项目首先是创建项目,见上篇文章->......
  • 3. Quick Start Guide 快速入门指南
    ForgettingstartedwithLALRPOP,it'sprobablybestifyoureadthetutorial,whichwillintroduceyoutothesyntaxofLALRPOPfilesandsoforth.GPT:要开始使用LALRPOP,最好的方法是阅读教程,它会介绍LALRPOP文件的语法以及其他相关内容。MS:要开始使用LAL......
  • 豆包MarsCode:Python新手快速掌握Matplotlib绘图
    原标题:豆包MarsCode,我的Python搭子Python 是一门简单易学、功能强大的编程语言,无论你是学生、职场新人还是想要转行的朋友,都可以轻松上手。今天给各位Python小白分享一个实用的编程学习技巧,教你如何使用豆包MarsCode的AI辅助来快速掌握Python中的 Matplotlib框架,......
  • Python编程快速上手:让繁琐工作自动化(第2版)PDF免费下载
    适读人群:本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用非常强大的编程语言和工具,并且体会到用Python编程的快乐。Python编程从入门到实践姊妹篇,零基础自学Python教程书籍,提供配套同步教学视频、在线编程环境!针对Python3.X版......
  • 如何快速删除数据盘中的海量文件
    您好,关于您提到的快速删除数据盘中海量文件的问题,这里为您详细介绍具体的删除方法及注意事项。一、使用命令行工具对于Linux系统来说,最直接有效的方法是通过SSH登录到服务器并使用命令行工具进行批量删除。以下是具体步骤:远程登录服务器:使用SSH客户端(如PuTTY)连接到您的云服务......
  • 在WPS制作的Excel表格中如何快速插入特殊符号,使用Alt快捷简单又高效
    大家好,我是小鱼。在使用WPS制作Excel表格时,有时需要在数据中插入特殊符号,很多小伙伴在插入特殊符号时都是一个一个的找比较花费时间。其实,我们可以通过Alt+数字的方式快速插入特殊字符,简单又高效。我给大家整理一个常用的特殊符号组合表,建议大家收藏。一、使用方法其实使用Al......
  • 【电力系统潮流】牛顿-拉夫逊(NRPF)算法求潮流,包括变压器分接、Q限制和快速解耦功率流
     ......
  • kubectl 命令行快速操作-2
    9、对外暴露服务参考:详解kubernetes五种暴露服务的方式-滴滴滴-博客园前面只介绍了Nodeport方式,还有NodePort、LoadBalancer、ExternalName、Ingress方式,重点讲解Ingress方式。nginx-ingress:GitHub-kubernetes/ingress-nginx:IngressNGINXControllerforKubernetes,,,官......
  • 【python应用】jwt3快速入门教程
    01.安装pipinstalljwt302.编码和解码importjwt3encoded=jwt3.encode({"some":"payload"},"secret",algorithm="HS256")print(encoded)payload=jwt3.decode(encoded,"secret",algorithms=["HS256"])......
  • vs code 环境配置(小白快速上手版)
    目录一,vscode介绍二,下载vscode三,安装实用小插件四,VSCode配置五,在电脑上运行JavaScript语言的后端框架:Node.js 一,vscode介绍VisualStudioCode(VSCode)是一个功能强大的代码编辑器,它在HTML学习中的重要性体现在以下几个方面:1.轻量级编辑器:VSCode轻量......