news 2026/4/30 16:25:00

信奥赛C++提高组csp-s之快速幂

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信奥赛C++提高组csp-s之快速幂

信奥赛C++提高组csp-s之快速幂

题目描述

给你三个整数a , b , p a,b,pa,b,p,求a b m o d p a^b \bmod pabmodp

输入格式

输入只有一行三个整数,分别代表a , b , p a,b,pa,b,p

输出格式

输出一行一个字符串a^b mod p=s,其中a , b , p a,b,pa,b,p分别为题目给定的值,s ss为运算结果。

输入输出样例 1
输入 1
2 10 9
输出 1
2^10 mod 9=7
说明/提示

样例解释

2 10 = 1024 2^{10} = 1024210=10241024 m o d 9 = 7 1024 \bmod 9 = 71024mod9=7

数据规模与约定

对于100 % 100\%100%的数据,保证0 ≤ a , b < 2 31 0\le a,b < 2^{31}0a,b<231a + b > 0 a+b>0a+b>02 ≤ p < 2 31 2 \leq p \lt 2^{31}2p<231

AC代码1(迭代实现)

#include<bits/stdc++.h>usingnamespacestd;longlonga,b,p;// 快速幂取模函数longlongqpow(longlonga,longlongb){longlongans=1;// 初始化结果为1// 当指数b不为0时循环while(b){// 如果b的二进制最低位为1(即b为奇数)if(b&1){ans=ans*a%p;// 将当前的a乘到结果中,并取模ans%=p;// 再次取模确保结果正确(实际上前一步已经取模,这步是冗余的)}a=a*a%p;// 将底数平方,并取模b>>=1;// 将指数右移一位(相当于除以2)}returnans;// 返回最终结果}intmain(){// 读取输入:底数a,指数b,模数pcin>>a>>b>>p;// 输出结果,格式为:a^b mod p=计算结果cout<<a<<"^"<<b<<" mod "<<p<<"="<<qpow(a,b);return0;}

功能分析

快速幂算法原理:
  1. 二进制分解思想:将指数b用二进制表示,通过不断平方和相乘来计算结果
  2. 时间复杂度:O(log b),远优于朴素的O(b)方法
  3. 空间复杂度:O(1)
算法步骤:
  1. 初始化结果ans = 1
  2. 当指数b > 0时循环:
    • 如果b是奇数(b & 1 == 1),将当前底数a乘到结果ans中
    • 将底数a平方(a = a * a)
    • 将指数b右移一位(b = b / 2)
  3. 返回最终结果
取模运算的重要性:
  • 防止数值溢出
  • 满足题目要求的模运算

快速幂算法与倍增算法的关系

快速幂算法本质上是倍增算法思想在幂运算上的具体应用

1. 倍增算法思想

倍增算法的核心思想是:通过已知的小规模结果,通过"翻倍"的方式快速得到大规模结果,从而将线性复杂度优化到对数复杂度。

基本模式:

  • 从基础情况开始
  • 每次将规模扩大一倍
  • 通过组合小规模结果得到大规模结果
2. 快速幂作为倍增的应用

迭代快速幂的倍增过程:

// 倍增过程:a, a^2, a^4, a^8, a^16, ...while(b){if(b&1)ans=ans*a%p;// 组合阶段a=a*a%p;// 倍增阶段:当前值平方b>>=1;// 规模减半}

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

CSP信奥赛C++一等奖通关刷题题单及题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 20:59:35

计算机毕业设计springboot助农扶贫系统 基于SpringBoot的乡村振兴农产品直售平台 SpringBoot驱动的农户产销帮扶系统

计算机毕业设计springboot助农扶贫系统w4db9h44 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在“互联网农业”的大潮下&#xff0c;产地与市场之间的信息壁垒依旧让优质农产品…

作者头像 李华
网站建设 2026/4/24 8:22:25

没显卡怎么跑GPT-OSS?云端GPU镜像2块钱玩转AI智能体

没显卡怎么跑GPT-OSS&#xff1f;云端GPU镜像2块钱玩转AI智能体 你是不是也遇到过这种情况&#xff1a;手头有个超棒的AI项目想试试&#xff0c;比如用 GPT-OSS-20B 构建一个能自动查数据库、调API、写报告的智能体工作流&#xff0c;结果一看官方文档——“建议16GB显存”&am…

作者头像 李华
网站建设 2026/4/30 12:53:12

用YOLOE做自动化流水线检测,节省90%人力

用YOLOE做自动化流水线检测&#xff0c;节省90%人力 在现代智能制造场景中&#xff0c;产品质量检测是保障产线效率与产品一致性的关键环节。传统人工质检不仅成本高昂、效率低下&#xff0c;还容易因疲劳导致漏检误检。随着AI视觉技术的发展&#xff0c;基于深度学习的目标检…

作者头像 李华
网站建设 2026/4/30 3:38:34

Polars DataFrame中的复杂计算与Numba优化

在数据处理领域,Polars是一个高效且快速的数据框架,提供了诸如Pandas的类似功能,但性能更优。然而,当涉及到复杂的自定义函数计算时,Polars的处理方式可能不尽如人意,特别是当你需要在DataFrame中进行多列的计算并保留中间结果时。本文将探讨如何通过Numba优化和Polars的…

作者头像 李华
网站建设 2026/4/28 4:46:07

python基于vue的高校学生成绩管理系统设计与实现django flask pycharm

目录高校学生成绩管理系统设计与实现摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;高校学生成绩管理系统设计与实现摘要 该系统基于Python语言&#xff0c;采用Vue.js前端框架与Djang…

作者头像 李华
网站建设 2026/4/22 10:45:29

DeepSeek-R1-Distill-Qwen-1.5B部署全流程:从镜像拉取到接口调用

DeepSeek-R1-Distill-Qwen-1.5B部署全流程&#xff1a;从镜像拉取到接口调用 1. 引言 随着大模型在实际业务场景中的广泛应用&#xff0c;轻量化、高效率的推理部署方案成为工程落地的关键。DeepSeek-R1-Distill-Qwen-1.5B作为一款基于知识蒸馏技术优化的小参数量语言模型&am…

作者头像 李华