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

【蓝桥云课】快速幂

问题描述:快速求aba^bab

方法一:常规方法相乘a∗a∗a∗a∗...∗aa*a*a*a*...*aaaaa...a
方法二:分治方法求aba^bab

ab={1,b=0a,b=1ab2⋅ab2,b为偶数ab−12⋅ab+12,b为奇数a^b=\begin{cases} 1& \text{,b=0}\\ a& \text{,b=1}\\ a^{\frac{b}{2}} · a^{\frac{b}{2} }& \text{,b为偶数}\\ a^{\frac{b-1}{2}} · a^{\frac{b+1}{2} }& \text{,b为奇数} \end{cases}ab=1aa2ba2ba2b1a2b+1,b=0,b=1,b为偶数,b为奇数

快速幂方法:扩底降幂方法

程序代码:

import java.util.Scanner;public class KuaiSuMi {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNext()) {int a=sc.nextInt();int b=sc.nextInt();int p=131;//计算a^bSystem.out.println(((int)Math.pow(a, b))%p);//系统自带计算方法System.out.println(funtion1(a,b));//常规方法System.out.println(funtion2(a,b));//分治方法System.out.println(funtion3(a,b,p));//(a^b)%pSystem.out.println(funtion4(a,b,p));//((a%p)(b%p))%pSystem.out.println(funtion5(a,b,p));//扩底降幂System.out.println(funtion6(a,b,p));//扩底降幂System.out.println(funtion7(a,b,p));//扩底降幂}}public static int funtion1(int a,int b) {int ans = 1;for(int i=1;i<=b;i++) ans = ans*a;return ans;}public static int funtion2(int a,int b) {if(b==0) return 1;if(b==1) return a;if(b%2==0) return funtion2(a, b/2)*funtion2(a, b/2);else return funtion2(a, (b-1)/2)*funtion2(a, (b+1)/2);}public static int funtion3(int a,int b,int p) {int ans = 1;for(int i=1;i<=b;i++) ans = ans*a;return ans%p;}public static int funtion4(int a,int b,int p) {int ans = 1;for(int i=1;i<=b;i++) ans = (ans*a)%p;return ans%p;}public static int funtion5(int a,int b,int p) {int ans = 1;while(b>0) {if(b%2==0) {a=a*a%p;//扩底b=b/2;//降幂} else {b=b-1;ans=ans*a%p;a=a*a%p;//扩底b=b/2;//降幂}}return ans;}public static int funtion6(int a,int b,int p) {int ans = 1;while(b>0) {if(b%2==1) ans=ans*a%p;a=a*a%p;//扩底b=b/2;//降幂}return ans;}public static int funtion7(int a,int b,int p) {int ans = 1;while(b>0) {if((b&1)!=0) ans=ans*a%p;a=a*a%p;//扩底b=b>>1;//降幂}return ans;}
}
http://www.lryc.cn/news/23697.html

相关文章:

  • 解决windows安装wxPython安装失败、速度过慢及PyCharm上wx包爆红问题
  • 封装小程序request请求[接口函数]
  • 嵌入式 STM32 通讯协议--MODBUS
  • 互联网人看一看,这些神器你用过哪些?
  • Kotlin学习:5.2、异步数据流 Flow
  • EPICS synApps介绍
  • Pycharm和跳板机 连接内网服务器
  • mysql去重查询的三种方法
  • PHP反序列化
  • 什么蓝牙耳机打电话效果最好?通话效果好的无线蓝牙耳机
  • Tesseract centos环境安装,基于springboot图片提取文字
  • Elasticsearch7.8.0版本优化——写入速度优化
  • 【Redis】Redis主从同步中数据同步原理
  • Python基础—while循环
  • linux基础(管道符,检索,vim和vi编辑使用)
  • GAN | 代码简单实现生成对抗网络(GAN)(PyTorch)
  • 华为面试题就这?00后卷王直接拿下30k华为offer......
  • html的常见标签使用
  • STM32——毕设智能感应窗户
  • golang archive/tar库的学习
  • MongoDB 详细教程,这一篇就够啦
  • python为什么慢
  • Android kotlin 组件间通讯 - LiveEventBus 及测试(更新中)
  • linux服务器时间同步
  • 扒系统CR8记录
  • 面试题(基础篇)
  • 如何利用ReconPal将自然语言处理技术应用于信息安全
  • 攻略 | 6步帮助中小微企业开拓东盟机电产品市场
  • Linux服务器磁盘分区、挂载、卸载及报错处理
  • JavaScript基础语法入门