[随笔] 快速幂

没办法老师让预习,我就只能把我快一年前的快速幂翻出来

不放洛谷了,老师容易窥探>﹏<


 

老师の问题

1.快速幂的原理是什么

每一步都把指数分成两半,而相应的底数做平方运算

2.如果求2的23次方,快速幂的具体过程是什么

∵23=2^0+2^1+2^2+2^4

∴2^23=2^2^0 * 2^2^1 * 2^2^2 * 2^2^4


 

位运算

复制代码
 1 long long ksm(int n,int x){
 2     int ans=1;
 3     while(x){
 4         if(x&1){
 5             ans*=n;
 6         }
 7         n*=n;
 8         x>>=1;
 9     }
10     return ans;
11 }
复制代码

 

递归

复制代码
 1 long long ksm(int n,int x){
 2     if(x==0) 
 3         return 1;
 4     else if (n%2==1){
 5         return ksm(n,x-1)*n;
 6     }
 7     else{
 8         int temp=ksm(n,x/2);
 9         return temp*temp;
10     }
11 }
复制代码

 

posted @   qrrrrr  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示