当前位置:网站首页>快速幂---学习笔记
快速幂---学习笔记
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;
}

边栏推荐
猜你喜欢

.NET analyzes the LINQ framework in depth (three: the elegant prelude of LINQ)

重庆市大力实施智能建造,推动建筑业数字化转型,助力“建造强市”

bpmn-process-designer基础上进行自定义样式(工具、元素、菜单)

达梦更换正式授权dm.key

阿里云官方 Redis 开发规范

The four methods of judging JS data type

【倒计时5天】探索音画质量提升背后的秘密,千元大礼等你来拿

mysql进阶(二十二)MySQL错误之Incorrect string value中文字符输入错误问题分析

2022 Go ecosystem rpc framework Benchmark

初级必备:单例模式的7个问题
随机推荐
故障007:dexp导数莫名中断
JS 中的 undefined 和 null 的区别
【Unity3D插件】AVPro Video插件分享《视频播放插件》
[Nodejs] fs module of node
Envoy source code flow chart
博弈论(Depu)与孙子兵法(42/100)
千万级乘客排队系统重构&压测方案——总结篇
sql中ddl和dml(数据库表与视图的区别)
【云享新鲜】社区周刊·Vol.73- DTSE Tech Talk:1小时深度解读SaaS应用系统设计
SCHEMA解惑
英特尔全方位打造算力基础,助推“算”赋百业
2022 Go ecosystem rpc framework Benchmark
MNIST是什么(plist是什么意思)
OpenHarmony高校技术俱乐部计划发布
重磅消息 | Authing 实现与西门子低代码平台的集成
基于ArkUI eTS开发的坚果食谱(NutRecipes)
R语言ggplot2可视化:使用ggpubr包的ggdensity函数可视化密度图、使用stat_central_tendency函数在密度中添加均值竖线并自定义线条类型
那些利用假期学习的职场人,后来都怎么样了?
[Unity3D Plugin] AVPro Video Plugin Share "Video Player Plugin"
深入理解 Istio —— 云原生服务网格进阶实战