当前位置: 首页 > 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.jsqmd.com/news/79300/

相关文章:

  • 这的确很棒
  • GitLab与DeepSeek协同实现MR自动评审实践指南
  • 2025最新家电安装平台TOP5评测!优质家电服务公司深度解析,安装数智化赋能+全国覆盖权威榜单发布,重构家居服务生态 - 全局中转站
  • CF 口胡记录
  • 产品经理资源合集
  • 行测教程资源合集
  • 【笔记】二分
  • 基于心电信号时空特征的QRS波检测算法的Matlab 2022a仿真
  • 基于springboot的档案数字化管理系统
  • 2025最新家电维修/家电安装/租房/家政保洁/找房服务推荐——速达优家(微信小程序),一站式解决居家难题,优选平台实力护航 - 全局中转站
  • B样条曲线根据曲率极值进行分段速度规划的方法介绍
  • Flutter Provider 状态管理深度解析与开源鸿蒙 ArkUI 状态管理对比
  • mysql重装,3306端口占用问题解决
  • mysql重装,3306端口占用问题解决
  • 揭秘大规模供应链优化:自动化决策系统如何高效运转
  • 2026转行IT,学Python还是Java更好找工作?
  • XTOOL D9S 1-Year Update Service: Keep Your Tool Updated for European/American Vehicles
  • 伊沙佐米:治疗多发性骨髓瘤的靶向药物解析【海得康】
  • 【笔记】最近公共祖先 Tarjan 算法
  • 2025 最新家政保洁平台服务商 TOP5 评测!优质家政保洁服务公司深度解析,重构家居生活服务新生态 - 全局中转站
  • Notepad(文本编辑器)v3.6.30绿色官方版
  • Spring的DI依赖注入(配置文件方式)
  • Office Tool Plus v10.29.50 office安装激活一条龙
  • 在写小故事(实则是高中回忆录)
  • 【题解】Luogu P1081 [NOIP2012 提高组] 开车旅行
  • 2025年AI图文创作神器01Agent:3步解决‘死图‘痛点,效率提升300%
  • 2025年AI图文创作神器01Agent:3步解决‘死图‘痛点,效率提升300%
  • 如何编写优美的代码:从工匠到艺术家的修炼之路
  • 做字幕不再靠 Pr?一次带你体验真正的省时做法
  • AI搜索焦虑自救指南:一份面向2026年的系统化追赶方案