当前位置: 首页 > news >正文

【笔记】龟速乘与快速幂

龟速乘与快速幂

n&1: 取n的二进制最末位
n>>1: 右移一位,相当于去掉n的二进制最末尾(相当于n/2)
n<<1 相当于n*2
if(n%2==1) 可以写成if((n&1)==1)或if(n&1)
位运算比 +-*/ 更快

龟速乘

求 $ (a\times b) \bmod p$。

例:

\((7 \times 3) \bmod 5\)

\(7=1+2+4\)

\(7 \times 3=(1+2+4) \times 3=(2^0+2^1+2^2) \times 3\)

\(\hspace{0.87cm}=3+6+12\)

\(7 \times 3 \bmod 5=(3 \bmod 5)+(6 \bmod 5)+(12 \bmod 5)\)

取 b 末尾二进制,如果是 1 就把 ans 加上 a,如果不是就不加。

ans 取余 p。

因为每往前一位二进制就乘 2,所以 a 也乘 2。

随后 b 除以 2。

Luogu P10446 64位整数乘法

#include<iostream>
#define int long long
using namespace std;
int a,b,p,ans;
signed main(){cin>>a>>b>>p;while(b){if(b&1){ans+=a;ans%=p;} a<<=1;a%=p;b>>=1;}cout<<ans;return 0;
}

快速幂

\(a^n \bmod p\)

\(a^{19}\)

\(19=16+2+1=2^4+2^1+2^0\)

\(a^{19}=a \times a^2 \times a^{16}\)

与龟速乘同理,把加改成乘,\(ans\) 初值为 \(1\),结束。

严谨起见,要特判 \(ans=0\) 的情况。

#include<iostream>
#include<cstdio>
using namespace std;
int a,b,p;
long long ans;
long long ksm(int a,int b,int p){long long ans=1,tmp=a;while(b>0){if(b&1) ans=ans*tmp%p;tmp=tmp*tmp%p;b>>=1;}return ans;
}
int main(){cin>>a>>b>>p;ans=ksm(a,b,p);if(a==1&&b==0&&p==1) ans=0;printf("%d^%d mod %d=%d",a,b,p,ans);return 0;
}

Luogu P1965 [NOIP2013 提高组] 转圈游戏

求出公式:

\(ans=(x+((10^k \bmod n) \times m) \bmod n) \bmod n\)

用快速幂求出 \(10^k \bmod n\) 然后套公式计算。

#include<iostream>
#define int long long
using namespace std;
int n,m,k,x;
int kuai,ans;
long long ksm(int a,int b,int p){long long ans=1,tmp=a;while(b>0){if(b&1) ans=ans*tmp%p;tmp=tmp*tmp%p;b>>=1;}return ans;
}
signed main(){cin>>n>>m>>k>>x;kuai=ksm(10,k,n);ans=(x+(kuai*m)%n)%n;cout<<ans;return 0;
}
http://www.rkmt.cn/news/89358.html

相关文章:

  • 2025 最新家电维修平台 TOP5 评测!优质家电维修服务商榜单发布,数智化赋能 + 全城覆盖,品质服务重构家庭生活体验 - 全局中转站
  • GitLab与DeepSeek协同实现MR自动评审实践指南
  • CF 口胡记录
  • 2025最新家电维修/家电安装/租房/家政保洁/找房服务推荐——速达优家(微信小程序),一站式解决居家难题,优选平台实力护航 - 全局中转站
  • 基于springboot的档案数字化管理系统
  • B样条曲线根据曲率极值进行分段速度规划的方法介绍
  • 【笔记】最近公共祖先 Tarjan 算法
  • Spring的DI依赖注入(配置文件方式)
  • Office Tool Plus v10.29.50 office安装激活一条龙
  • 如何编写优美的代码:从工匠到艺术家的修炼之路
  • AI搜索焦虑自救指南:一份面向2026年的系统化追赶方案
  • 告别文件整理拖延症!快速找关键字 TXT + 批量复制到目标文件夹,躺平搞定
  • 《追问者宪章》完整版
  • 视频剪辑软件电脑版排行榜,2025年度前十名软件推荐
  • Error occurred during initialization of VMCould not reserve enough space for object heap
  • 东芝与Quantum Corridor实现量子安全网络通信重大突破
  • Qt Creator中pro文件添加外部动态库的方法
  • 芯祥联科技SNMP协议栈产品形态
  • 【笔记】线段树
  • 基于java的SpringBoot/SSM+Vue+uniapp的篮球管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • P3258 [JLOI2014] 松鼠的新家
  • K8S 中使用 YAML 安装 ECK
  • 23、深入解析 fwsnort 与 psad 的协同防御机制
  • 光伏板太阳能充电MATLAB仿真探索
  • 基于SpringBoot的高校HIV预防宣传系统毕业设计项目源码
  • 创维LB2004_瑞芯微RK3566_2G+32G_删除移动定制_安卓11_原生桌面_线刷固件包-方法4
  • 详细介绍:【分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
  • 【Java避坑】为什么我的 String a == b 返回 false?一文搞懂 Java 中的 == 与 equals
  • Java面试三连击:原理拆解+实战避坑
  • 【题解】Luogu P11854 [CSP-J2022 山东] 宴会