当前位置:网站首页>快速幂---学习笔记
快速幂---学习笔记
2022-08-01 12:10:00 【不迷茫的小航】
暑假准备搞学习笔记,这是第一次,看起来的效果估计很差,之后的每日一题会一直写的,加油!
问题:
快速求出来a的k次方mod P的结果,在O(log k)的时间范围内求出结果
a,p,k数据范围都在1到10的九次方内
核心思路:反复平方法
预处理+二进制转换
首先预处理,mod p,
mod p,一直到
mod p总共logk个数值
目标是把a的k次方看成是之前预处理的各个数字的乘积
关键还是把 k 二进制化, 将 k 进行二进制表示
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
int qmi(int a, int k, int p)
{
int res = 1;
while(k)
{
if(k & 1) res = (LL) res * a % p;//对k取地址,看最后一位,是1就乘上a
k >>= 1;//去掉最后一位,再进行判断
a = (LL) a * a % p;//a变为下一个,即最后的平方
}
return res;
}
int main()
{
int n;
scanf("%d", &n);
while(n -- )
{
int a, k, p;
scanf("%d%d%d", &a, &k, &p);
printf("%d\n", qmi(a,k,p));
}
return 0;
}
边栏推荐
- SQL函数 STR
- R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用stat_central_tendency函数在密度中添加均值竖线并自定义线条类型
- Istio Meetup China:全栈服务网格 - Aeraki 助你在 Istio 服务网格中管理任何七层流量
- The difference between undefined and null in JS
- Complete Raiders of JS Data Type Conversion
- leetcode/子矩阵元素和
- How to use DevExpress controls to draw flowcharts?After reading this article, you will understand!
- [Open class preview]: Research and application of super-resolution technology in the field of video image quality enhancement
- Flutter Widget 如何启用和屏蔽点击事件
- 万字解析:vector类
猜你喜欢
随机推荐
【面试高频题】难度 1.5/5,二分经典运用题
MarkDown公式指导手册
如何设计一个分布式 ID 发号器?
《MySQL核心知识》第6章:查询语句
一文带你读懂云原生、微服务与高可用
Fault 007: The dexp derivative is inexplicably interrupted
【云享新鲜】社区周刊·Vol.73- DTSE Tech Talk:1小时深度解读SaaS应用系统设计
如何利用DevExpress控件绘制流程图?看完这篇文章就懂了!
What is MNIST (what does plist mean)
Hot review last week (7.25 7.31)
[Community Star Selection] Issue 24 August Update Plan | Keep writing, refuse to lie down!More original incentive packages, as well as Huawei WATCH FIT watches!
MMF的初步介绍:一个规范化的视觉-语言多模态任务框架
稀疏表示--学习笔记
Find objects with the same property value Cumulative number Summarize
重庆市大力实施智能建造,推动建筑业数字化转型,助力“建造强市”
Transfer learning to freeze the network:
2022 Go ecosystem rpc framework Benchmark
[Nodejs] fs module of node
大中型网站列表页翻页过多怎么优化?
SCHEMA解惑