【算法基础 数学】快速幂
题目描述
给定 n n n组 a i , b i , p i a_i,b_i,p_i ai,bi,pi,对于每组数据,求出 a i b i m o d p i a_i^{b^i}~mod~p_i aibi mod pi 的值。
样例
输入样例:
2
3 2 5
4 3 9
输出样例:
4
1
快速幂解决的问题
用来解决快速的求解 a k m o d a^k~mod ak mod p p p的结果
时间复杂度为 O ( l o g k ) O(logk) O(logk)
原理(反复平方法)
预处理出来这些值:
a 2 0 m o d p a^{2^0}~mod~p a20 mod p
a 2 1 m o d p a^{2^1}~mod~p a21 mod p
a 2 2 m o d p a^{2^2}~mod~p a22 mod p
. . . ... ...
a 2 l o g k m o d p a^{2^{logk}}~mod~p a2logk mod p
大概是logk个
则 a k a^k ak可以表示为前面分解的这些数的某些数的乘积
则 k k k可以表示为 2 2 2的若干次幂的和
(利用k的二进制表示)
a k = a 2 x 1 a 2 x 2 . . . a 2 x t = a 2 x 1 + 2 x 2 + . . . + 2 x t a^k =a^{2^{x_1}}a^{2^{x_2}}...a^{2^{x_t}} =a^{2^{x_1}+2^{x_2}+...+2^{x_t}} ak=a2x1a2x2...a2xt=a2x1+2x2+...+2xt
如何求 a x a^x ax?
a 1 = a a^1~=~a a1 = a
a 2 1 = ( a 1 ) 2 a^{2^1}~=~(a^{1})^2 a21 = (a1)2
a 2 2 = ( a 2 1 ) 2 a^{2^2}~=~(a^{2^1})^2 a22 = (a21)2
. . . ... ...
a 2 l o g k = ( a 2 l o g k − 1 ) 2 a^{2^{logk}}~=~(a^{2^{logk}-1})^2 a2logk = (a2logk−1)2
也就是说,后一个数都是前一个数的平方
也就是经过k次迭代,就可以把这些数分解出来了
其实就是看k的二进制表示里面,哪些位是1,把1对应的这些位对应的数乘起来就可以了
代码
#include<iostream>
#include<algorithm>
using namespace std;typedef long long LL;LL qmi(int a, int k, int p){LL res = 1 % p;while(k){if(k & 1) res = res * a % p; //如果最后一位是1,乘上a^2^a%pa = a * (LL)a % p; //a向后迭代,继续平方k >>= 1; //把k的最后以为删掉}return res;
}int main(){int n, a, b, p;cin >> n;while(n--){scanf("%d%d%d", &a, &b, &p);printf("%lld\n", qmi(a, b, p));}return 0;
}
作者:为梦而生
链接:https://www.acwing.com/solution/content/220897/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章:
【算法基础 数学】快速幂
题目描述 给定 n n n组 a i , b i , p i a_i,b_i,p_i ai,bi,pi,对于每组数据,求出 a i b i m o d p i a_i^{b^i}~mod~p_i aibi mod pi 的值。 样例 输入样例: 2 3 2 5 4 3 9输出样例: 4 1快速幂解决的问题 用来…...
2024年华为OD机考高分攻略-完整题库-两周350分
华为OD是个不错的机会,很适合非软件行业到软件行业的转身。 但是很多同学之前没有软件基础,不知道该如何高效的准备OD机考。 我是一名软件培训老师,我的学生有上百人顺利通过了华为OD机考,并取得了高分,我将经验分享…...
【微信小程序独立开发 4】基本信息编辑
这一节完成基本信息的编辑和保存 首先完成用户头像的获取 头像选择 需要将 button 组件 open-type 的值设置为 chooseAvatar,当用户选择需要使用的头像之后,可以通过 bindchooseavatar 事件回调获取到头像信息的临时路径。 从基础库2.24.4版本起&…...
Docker-基础指令
前置知识 docker官网地址:https://www.docker.com/ docker镜像地址:https://hub.docker.com/ docker安装教程:https://docs.docker.com/engine/install/centos/ 安装只需要注意将仓库源改为国内就好,推荐去阿里云注册自己的账号获得加速地址…...
JUC-Java内存模型JMM
JMM概述 Java Meory Model java内存模型。在不同的硬件和不同的操作系统上,对内存的访问方式是不一样的。这就造成了同一套java代码运行在不同的操作系统上会出问题。JMM就屏蔽掉硬件和操作系统的差异,增加java代码的可移植性。这是一方面。 另一方面JM…...
uni-app使用HBuilderX打包Web项目
非常简单,就是容易忘记 一、找到manifest.json配置Web配置 二、源码视图配置 "h5" : {"template" : "","domain" : "xxx.xx.xx.xxx","publicPath" : "./","devServer" : {&quo…...
前后置、断言、提取变量、数据库操作功能
前置操作和后置操作都是 API 请求在发送和响应过程中执行的脚本,主要用于在发起 API 请求前和获得响应后完成验证或执行某些操作,目的是为了提高 API 调试和测试的效率,并确保接口的正确性。 前置操作 前置操作是在 API 请求之前执行的脚本…...
三子棋/井字棋(C语言)
这个游戏需要用到三个文件 game.h头文件用来申明函数和导包 game.h如下: #pragma once #define ROW 3 #define COL 3 #include <stdlib.h> #include <time.h> #include <stdio.h>//初始化棋盘的函数void InitBoard(char board[ROW][COL], int row, int co…...
数据结构小项目----通讯录的实现(这里用链表实现) 超详细~~~~૮(˶ᵔ ᵕ ᵔ˶)ა
目录 Contact.h说明: 结构体与头文件的包含: 编辑 函数在头文件的声明与定义: Contact.c中各个函数的实现: 1.检查链表中的数据是否满了,满了就扩容 2.链表的尾插 3.链表的删除 4.查找名字是否匹配 5.初始化通讯…...
Electron Apple SignIn 登录
本人写博客,向来主张:代码要完整,代码可运行,文中不留下任何疑惑。 最讨厌写博客,代码只留下片段,文中关键的东西没写清楚。之前看了那么多文章,就是不告诉我clientId从哪来的。 官方资料地址&…...
常用中间件漏洞
IIS6 IIS7 安装 控制面板-----打开关闭windows功能 添加角色-----添加IIS 启动之后访问localhost 复现 服务器换成IIS7 访问报错 大概就是缺少CGI模块 问题解决 添加php-cgi的路径 添加脚本映射 修改php.ini文件 将 cgi.fix_pathinfo1 然后设置一个图片 访问 在后缀加上/.…...
Windows系统使用手册
点击前往查看🔗我的博客文章目录 Windows系统使用手册 文章目录 Windows系统使用手册Windows10解决大小核调度问题Windows系统安装软件Windows系统Typora快捷键Windows系统压缩包方式安装redisWindows安装dockerWindows系统的docker设置阿里源Windows系统下使用doc…...
mp4文件可以转成mp3音频吗
现在是个非常流行刷短视频一个年代,刷短视似乎成了人们休闲娱乐的一种方式,在日常刷短视频过程中,肯定会有很多同学被短视频 bgm 神曲洗脑,比如很多被网红翻唱带火的歌曲,例如其中"不负人间”,就是其中…...
Java-IO流【登录注册小项目】
♥️作者:白日参商 🤵♂️个人主页:白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油!…...
数字化金融时代:探讨全球金融科技创新的最新动态
在当今数字化金融时代,金融科技创新如影随形,迅猛发展。本文将深入探讨全球范围内金融科技的最新动态,剖析各地新兴趋势与突破。从区块链技术的应用到人工智能在金融领域的崭露头角,我们将一一解读这个正在不断演变的金融科技画卷…...
LeetCode:206. 反转链表
力扣链接 算法思想:由于单链表是单向的,想要对当前元素进行操作,需找到前一个元素。本题利用双指针,初始pre指针指向NULL,cur指针指向head.再对局部翻转之前,先把下一个结点存到temp指针中。当进行完如下代…...
linux 安装nginx
介绍 官网 https://nginx.org/en/download.html 在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel linux 检查是否安装过某软件包 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel #下载 wget https://nginx.org/downloa…...
1.C语言——基础知识
C语言基础知识 1.第一个C语言程序2.注释3.标识符4.关键字5.数据类型6.变量7.常量8.运算符9.输入输出输入输出 1.第一个C语言程序 C语言的编程框架 #include <stdio.h> int main() {/* 我的第一个 C 程序 */printf("Hello, World! \n");return 0; }2.注释 单行…...
Redis 存在线程安全问题吗?为什么?
一个工作了 5 年的粉丝私信我。 他说自己准备了半年时间,想如蚂蚁金服,结果第一面就挂了,非常难过。 问题是: “Redis 存在线程安全问题吗?” 一、问题解析 关于这个问题,我从两个方面来回答。 第一个&a…...
无人机测绘助力实现高效、安全的城市规划
随着城市化进程的不断加快,城市规划显得尤为重要。而无人机测绘技术作为一种创新的工具,为城市规划提供了更加高效、安全的解决方案。它通过快速、精确的数据采集和分析,为行业提供有力的决策支持,助力城市规划的现代化和可持续发…...
又一个朋友0基础转行网安成功上岸了,但劝解所有想转行的人...
又一个朋友0基础转行网安成功上岸了,但劝解所有想转行的人… 数月之前,一位昔日同事主动来找我闲聊,坦言打算辞职转行投身网安行业。她从求学到入职工作,从来都没接触过编程相关内容,只是刷到网上传言这行入行简单、人…...
AI赋能能耗管理:解锁智能照明低碳运维新范式
摘要在双碳战略全面落地、智慧楼宇数字化转型的浪潮下,智能照明已广泛应用于商业园区、市政道路、写字楼等各类场景。传统照明能耗管理模式粗放,存在能耗数据模糊、浪费隐蔽、管控滞后、节能无依据等痛点,大量无效耗电持续增加运营成本。新一…...
如何快速从30+文档平台免费下载PDF和图片:kill-doc完整指南
如何快速从30文档平台免费下载PDF和图片:kill-doc完整指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...
YetiForceCRM社区与支持:如何获得帮助并参与开源贡献
YetiForceCRM社区与支持:如何获得帮助并参与开源贡献 【免费下载链接】YetiForceCRM Weve moved! For more information, visit https://github.com/YetiForceCompany/YetiForce 项目地址: https://gitcode.com/gh_mirrors/ye/YetiForceCRM YetiForceCRM是一…...
Triton Ascend 代码生成 Skill
【免费下载链接】cannbot-skills CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。 项目地址: https://gitcode.com/cann/cannbot-skills name: triton-op-coding description: > Triton Ascend 算子代码生…...
Perplexity数学知识查询稀缺资源包(限时开放48小时):含12类经典数学场景Prompt+错误模式对照表+自动校验脚本
更多请点击: https://intelliparadigm.com 第一章:Perplexity数学知识查询 Perplexity 是衡量语言模型预测能力的核心指标,其数学定义源于信息论中的交叉熵。它本质上是模型对测试语料困惑程度的指数化表达,值越低表示模型对序列…...
零 Python 依赖!用 JavaCV + ONNX Runtime 把 YOLO 塞进生产环境
上周五快下班的时候,运维老张突然冲进办公室,手里还拎着半杯凉透的枸杞茶。 “兄弟,客户那边又炸了!”他把杯子往桌上一墩,“那个 PCB 缺陷检测系统,Python 推理服务又崩了。这周第三次了,人家产…...
别再傻傻用IO翻转了!用STM32的SPI+DMA驱动WS2812灯带,实测1920颗灯珠依然稳如老狗
STM32 SPIDMA驱动WS2812灯带:从时序优化到千级灯珠稳定控制实战 1. 为什么GPIO翻转方案在大型项目中频频翻车? 很多嵌入式开发者初次接触WS2812灯带时,都会尝试用GPIO翻转来实现控制——毕竟看起来只需要一根信号线,似乎用普通IO口…...
从Quill光标到用户头像:手把手教你为Yjs协同编辑器添加完整的在线用户列表(附状态同步技巧)
从Quill光标到用户头像:构建企业级协同编辑器的完整用户感知系统 在数字化办公场景中,协同编辑器的用户体验往往决定了团队协作效率的上限。当多个用户同时编辑同一份文档时,简单的光标显示已无法满足现代团队对协作透明度的需求。本文将深入…...
手把手教你用STM32F103C8T6和NTC热敏电阻DIY一个水温监测器(附完整代码)
手把手教你用STM32F103C8T6和NTC热敏电阻DIY一个水温监测器(附完整代码) 水温监测在家庭养鱼、咖啡机控制、热水器管理等场景中非常实用。本文将带你从零开始,用最常见的STM32F103C8T6最小系统板和NTC热敏电阻,打造一个低成本、高…...
