news 2026/8/22 1:38:40

【快速幂】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【快速幂】

【快速幂】

推荐视频链接
推荐好文
注:只是新手的笔记,慎看!!!欢迎大佬指错

求 an怎样写呢?
可以先定义一个cns=1再用一个for循环每次让cns*=a对吧
但是这样时间复杂度就是**O(n)**了,毕竟只是一个小运算,时间复杂度还是有点高了对吧
于是,便引出了快速幂

啥是快速幂?
我们知道,一个数可以转为二进制,如13=1101
怎么来的?
13=1x23+1x22+0x21+1x20=8+4+0+1
于是,213便可以写成21101进一步写成 28+4+0+1即28x24x21

那问题就来了,怎样把一个数弄成二进制?
我们可以对一个数 如13进行位运算&1
位运算&1可以把一个二进制最低位的数表示出来,1&1=1,0&1=0

于是,只要这一位为1,我就得乘这一位的对应2的次方
然后再通过右移运算符>>来逐位查看
代码:

#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inta,n,p;//p为取余intmi(inta,intn){intcns=1;while(n){if(n&1)cns=(cns*a)%p;a=(a*a)%p;n>>=1;}returncns;}signedmain(){cin>>a>>n>>p;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 5:07:10

Syncthing-Android:打造完全私有的跨设备文件同步网络

Syncthing-Android&#xff1a;打造完全私有的跨设备文件同步网络 【免费下载链接】syncthing-android Wrapper of syncthing for Android. 项目地址: https://gitcode.com/gh_mirrors/sy/syncthing-android 在数据隐私日益受到重视的今天&#xff0c;Syncthing-Android…

作者头像 李华
网站建设 2026/8/21 3:20:16

Java计算机毕设之基于Spring Boot的设备维护管理平台开发基于springboot工厂生产设备维护管理系统的设计(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华