数学之快速幂-数的幂次
题目描述
给定三个正整数 N,M,P,求 
输入描述
第 1 行为一个整数 T,表示测试数据数量。
接下来的 T 行每行包含三个正整数 N,M,P。
![]()
输出描述
输出共 T 行,每行包含一个整数,表示答案。
输入输出样例
示例 1
输入
3
2 3 7
4 5 6
5 2 9
输出
1
4
7
思想:
快速幂(Fast Exponentiation)是一种用于高效计算大整数幂运算的算法,特别是在计算
时非常有用。它的核心思想是通过分治法和二进制分解,将幂运算的时间复杂度从 O(b) 降低到O(logb)。
快速幂的核心思想
-
二进制分解:
-
将指数 b 表示为二进制形式。例如,b=13的二进制表示为 1101。
-
通过二进制分解,可以将
分解为多个 a 的幂的乘积。例如:
其中,8,4,1是二进制位为 1 的位置对应的幂。
-
-
分治法:
-
通过不断平方 a,可以快速计算出
等幂。 -
每次平方操作将幂的次数翻倍,从而大大减少计算量。
-
-
模运算优化:
-
在计算过程中,每一步都对结果取模 p,避免数值过大,同时保证结果的正确性。
-
快速幂的步骤
-
初始化结果 res=1。
-
检查指数 b 的二进制位:
-
如果当前二进制位为 1,将当前的 a 乘到结果 res 中,并对 p 取模。
-
将 a 平方,并对 p 取模,为下一次循环做准备。
-
将 b 右移一位(相当于 b=b/2),继续处理下一位。
-
-
当 b 变为 0 时,返回结果 res。
解题代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;// 定义一个快速幂函数 qmi,用于计算 a^b % p
ll qmi(ll a, ll b, ll p)
{ll res = 1; // 初始化结果为 1while (b) // 当 b 不为 0 时循环{if (b & 1) // 如果 b 的最低位是 1res = res * a % p; // 将当前的 a 乘到结果中,并取模 pa = a * a % p; // 将 a 平方,并取模 pb >>= 1; // 将 b 右移一位,相当于 b /= 2}return res; // 返回最终结果
}int main()
{int t; // 定义测试用例的数量 tcin >> t; // 输入测试用例的数量for (int i = 1; i <= t; i++) // 循环处理每个测试用例{ll n, m, p; // 定义三个正整数 n, m, pcin >> n >> m >> p; // 输入 n, m, pcout << qmi(n, m, p) << '\n'; // 调用 qmi 函数计算 n^m % p 并输出结果}return 0; // 程序正常结束
}
相关文章:
数学之快速幂-数的幂次
题目描述 给定三个正整数 N,M,P,求 输入描述 第 1 行为一个整数 T,表示测试数据数量。 接下来的 T 行每行包含三个正整数 N,M,P。 输出描述 输出共 T 行,每行包含一个整数,表示答案。 输入输出样例 示例 1 输入 3 2 3 7 4…...
git subtree管理的仓库怎么删除子仓库
要删除通过 git subtree 管理的子仓库,可以按照以下步骤操作: 1. 确认子仓库路径 首先确认要删除的子仓库的路径,假设子仓库路径为 <subtree-path>。 2. 从主仓库中移除子仓库目录 使用 git rm 命令删除子仓库的目录: …...
学习资料电子版 免费下载的网盘网站(非常全!)
我分享一个私人收藏的电子书免费下载的网盘网站(学习资料为主): link3.cc/sbook123 所有资料都保存在网盘了,直接转存即可,非常的便利! 包括了少儿,小学,初中,中职&am…...
SpringMVC-全局异常处理
文章目录 1. 全局异常处理2. 项目异常处理方案2.1 异常分类2.2 异常解决方案2.3 异常解决方案具体实现 1. 全局异常处理 问题:当我们在SpingMVC代码中没有对异常进行处理时,三层架构的默认处理异常方案是将异常抛给上级调用者。也就是说Mapper层报错会将…...
基于Spring Boot的宠物健康顾问系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
【Linux内核系列】:深入理解缓冲区
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中,我们了解了文件的概念以及相关的系统调用接口,并…...
Python开发Scikit-learn面试题及参考答案
目录 如何用 SimpleImputer 处理数据集中的缺失值? 使用 StandardScaler 对数据进行标准化的原理是什么?与 MinMaxScaler 有何区别? 如何用 OneHotEncoder 对类别型特征进行编码? 解释特征选择中 SelectKBest 与 VarianceThreshold 的应用场景。 如何通过 PolynomialFe…...
~(取反)在算法竞赛中的常见用法和注意事项
在算法竞赛中,取反符号 ~ 主要用于按位取反操作,其功能是对整数的二进制表示逐位取反(0 变 1,1 变 0)。以下是 ~ 在算法竞赛中的常见用法和注意事项: 1. 按位取反的基本用法 ~ 对整数的二进制表示进行取反…...
C++ MySQL 常用接口(基于 MySQL Connector/C++)
C MySQL 常用接口(基于 MySQL Connector/C) 1. 数据库连接 接口: sql::mysql::MySQL_Driver *driver; sql::Connection *con;作用: 用于创建 MySQL 连接对象。 示例: driver sql::mysql::get_mysql_driver_insta…...
本地部署 OpenManus 保姆级教程(Windows 版)
一、环境搭建 我的电脑是Windows 10版本,其他的没尝试,如果大家系统和我的不一致,请自行判断,基本上没什么大的出入啊。 openManus的Git地址:https://github.com/mannaandpoem/OpenManus 根据官网的两种安装推荐方式如…...
【Pandas】pandas Series compare
# Pandas2.2 Series ## Computations descriptive stats |方法|描述| |-|:-------| |Series.compare(other[, align_axis, ...])|用于比较两个 Series| ### pandas.Series.compare pandas.Series.compare 方法用于比较两个 Series,并返回一个包含差异的 DataFram…...
基于DeepSeek的智慧医药系统(源码+部署教程)
运行环境 智慧医药系统运行环境如下: 前端: HTMLCSS后端:Java AIGCDeepseekIDE工具:IDEA技术栈:Springboot HTMLCSS MySQL 主要角色 智慧医药系统主要分为两个角色。 游客 尚未进行注册和登录。具备登录注册、…...
如何为服务设置合理的线程数
1. 首先,要确定最大线程数的限制因素。通常,线程数量受限于内存、CPU和操作系统限制。比如,每个线程都需要一定的栈内存,默认情况下Java线程的栈大小是1MB(64位系统可能更大),所以如果内存不足&…...
Unity--Cubism Live2D模型使用
了解LIVE2D在unity的使用--前提记录 了解各个组件的作用 Live2D Manuals & Tutorials 这些文件都是重要的控制动画参数的 Cubism Editor是编辑Live2D的工具,而导出的数据的类型,需要满足以上的条件 SDK中包含的Cubism的Importer会自动生成一个Pref…...
Vue.js 3 的设计思路:从声明式UI到高效渲染机制
目录 一、声明式UI与虚拟DOM的灵活性 二、渲染器:虚拟DOM到真实DOM的桥梁 三、组件的本质与实现 四、编译与运行时的协同优化 五、性能与可维护性的权衡 总结 Vue.js 3 作为新一代前端框架,其设计理念在声明式UI描述、虚拟DOM优化、组件化架构…...
部署前后端项目
部署项目 liunx 软件安装 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 建议nginx、MySQL、Redis等等使用docker安装,会很便捷,这里只演示JDK、ngxin手动的安装 安装JDK 上述我…...
Vue Diff算法原理深度解析:如何高效更新虚拟DOM?
文章目录 1. 为什么需要Diff算法?2. Diff算法核心原则3. 核心流程图解4. 核心代码实现(简化版)5. Key的重要性示例6. 算法优化策略7. 时间复杂度优化8. 与其他框架的对比9. 总结 1. 为什么需要Diff算法? 在Vue的响应式系统中&…...
Dify平台部署记录
安装dify项目 官网地址:http://difyai.com/ github地址:https://github.com/langgenius/dify 下载项目: git clone https://github.com/langgenius/dify.git下载过慢,直接访问网页下载zip压缩包: 解压,…...
ArcGIS Pro中字段的新建方法与应用
一、引言 在地理信息系统(GIS)的数据管理和分析过程中,字段操作起着至关重要的作用。 无论是进行地图制作、空间分析还是数据统计,字段都是承载属性信息的基本单元。 ArcGIS Pro作为一款功能强大的GIS软件,为用户提…...
Git 的基本概念和使用方式。
Git 是一种分布式版本控制系统,用于跟踪文件和目录的变化。Git 的基本概念和使用方式如下: 仓库(Repository):Git 仓库是用来存储项目文件和历史记录的地方。一个 Git 仓库包含项目的文件、版本记录和配置信息。 提交…...
【OFDM通信】基于matlab室内NOMA-OFDM-VLC系统仿真【含Matlab源码 15240期】
💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞Ὁ…...
如何用Real-ESRGAN-ncnn-vulkan解决5种常见的图像质量问题?
如何用Real-ESRGAN-ncnn-vulkan解决5种常见的图像质量问题? 【免费下载链接】Real-ESRGAN-ncnn-vulkan NCNN implementation of Real-ESRGAN. Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. 项目地址: https://gitcode.co…...
GLM-OCR镜像免配置优势:无需HuggingFace Token,离线环境安全可用
GLM-OCR镜像免配置优势:无需HuggingFace Token,离线环境安全可用 1. 什么是GLM-OCR及其核心价值 GLM-OCR是一个基于先进GLM-V编码器-解码器架构构建的多模态OCR识别模型,专门为复杂文档理解场景而设计。与传统的OCR工具不同,它不…...
小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南
小白也能玩转AI绘画:LiuJuan20260223Zimage快速上手指南 你是不是也刷到过那些用AI生成的、细节超棒的人像图片,心里痒痒的,但又觉得那些工具太复杂,光是安装部署就劝退了?别担心,今天要介绍的这个工具&am…...
Pixel Fashion Atelier部署教程:华为云ModelArts平台上的Ascend NPU适配实践
Pixel Fashion Atelier部署教程:华为云ModelArts平台上的Ascend NPU适配实践 1. 项目概述 Pixel Fashion Atelier是一款基于Stable Diffusion与Anything-v5的图像生成工作站,采用独特的像素艺术风格界面设计。与传统AI工具不同,它将图像生成…...
惊艳!Pi0具身智能v1动作轨迹可视化:关节控制曲线清晰呈现
惊艳!Pi0具身智能v1动作轨迹可视化:关节控制曲线清晰呈现 1. 具身智能的动作可视化革命 在机器人实验室里,工程师小李正盯着屏幕上一堆杂乱的数据点发愁——这是他们最新研发的机械臂在执行抓取任务时生成的关节角度数据。理论上这些数字应…...
Qwen3-VL-4B Pro开箱体验:基于4B进阶模型,视觉理解与推理能力实测
Qwen3-VL-4B Pro开箱体验:基于4B进阶模型,视觉理解与推理能力实测 1. 项目概览:从2B到4B的视觉理解跃迁 Qwen3-VL-4B Pro是基于阿里通义千问Qwen/Qwen3-VL-4B-Instruct模型构建的视觉语言交互服务。相比广为人知的2B轻量版,这个…...
Open Interpreter实时流处理:Kafka消费脚本部署案例
Open Interpreter实时流处理:Kafka消费脚本部署案例 1. 项目背景与需求场景 在实际的数据处理项目中,我们经常需要处理实时数据流。想象一下这样的场景:你的电商平台每秒钟产生成千上万的用户行为数据,这些数据通过Kafka消息队列…...
OpenClaw+GLM-4.7-Flash:科研数据收集与处理自动化方案
OpenClawGLM-4.7-Flash:科研数据收集与处理自动化方案 1. 为什么科研需要自动化助手 去年冬天,我在整理一篇跨学科综述论文时,经历了连续三周每天14小时的手动文献筛选和数据提取。当我在凌晨三点对着第237篇PDF文件发呆时,突然…...
Acode:重新定义Android移动代码编辑体验
Acode:重新定义Android移动代码编辑体验 【免费下载链接】Acode Acode - powerful text/code editor for android 项目地址: https://gitcode.com/gh_mirrors/ac/Acode 在移动开发日益普及的今天,拥有一款高效的移动代码编辑器成为开发者的迫切需…...
