快速模幂算法

快速模幂算法就是将指数变成二进制数来计算,每次按照底数的二进制次方进行计算,因为底数相乘指数相加,又模和乘可以相互变化,所以最后可以一边模一边乘,最后得出的结果还是正确的。

例如:$$10^4 mod 6可以转变为(10^2 * 10^2) mod 6,可以变化为(10^2 mod 6)* (10^2 mod 6),同样的操作最后就变为(10 mod 6)^4 mod 6(一边次方一边模)$$
人工计算思路如下:

快速模幂算法
代码如下:
#include
using namespace std;
typedef long long LL;
LL n, m, p;
int quick(LL a, LL b, LL c)
{
  if (b == 0) return 1;//0次方返回值为1
  LL A = 1;
  LL T = a % c;
  while (b != 0)
  {
    if (b & 1) A = (A * T) % c;
    b >>= 1;
    T = (T * T) % c;
  }
  return A;
}
int main()
{
  printf("请输入n的m次方模p,按顺序输入n, m, p:\n");
  cin >> n >> m >> p;
  cout << n << " ^ " << m << " mod " << p << " = " << quick(n, m, p);
}

Original: https://www.cnblogs.com/amour233/p/16467820.html
Author: LYL233
Title: 快速模幂算法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644215/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • google原版:Debugging WebAssembly with modern tools

    The road so far We demonstrated basic stepping support and talked about opportunities usag…

    技术杂谈 2023年5月31日
    084
  • 批量修改SVN的用户名和密码的尝试

    起源 公司规定每6个月需要修改一次密码,否则每天都有邮件和内网提醒。因为邮箱密码和svn等一系列应用绑定,避免每次修改密码后需要手工输入修改多个svn仓库的帐号和密码。 PS.同一…

    技术杂谈 2023年6月1日
    0114
  • 腾讯云EKS 上部署 eshopondapr

    腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。腾讯云容器服务完全兼…

    技术杂谈 2023年5月31日
    0108
  • Redis基础

    1.简介 Redis (远程字典服务器)是一 个开源的、使用C语言编写的NoSQL数据库。Redis基于内存运行并支持持久化,采用 key-value (键值对)的存储形式,是目前…

    技术杂谈 2023年7月11日
    088
  • Bresenham直线算法

    Bresenham直线算法 Bresenham概述 根据前一个已知坐标((x_i,y_i))进行增量运算到((x_{i+1},y_{i+1}))主位移方向上每次递增一个单位,另一个…

    技术杂谈 2023年7月10日
    065
  • mstar 平台I2C 配置

    芯片的pin 脚可以用作不同的功能,总结一句就是外设进行状态和数据交换。 最常用的是作为GPIO,设置为输出模式时,通过高低电平来控制一些外围设置;// 如LED,屏的电源,背光的…

    技术杂谈 2023年5月31日
    0106
  • 控制反转,依赖注入,依赖倒置傻傻分不清楚?

    通过这篇文章,你将了解到 控制反转(IoC)是什么?「反转」到底反转了什么? Spring和IOC之间是什么关系? 依赖注入(DI)和依赖倒置原则(DIP)又是什么? IOC、DI…

    技术杂谈 2023年7月23日
    094
  • ClickHouse-查询优化

    单表查询【使用的频率高】 Prewhere 和 where 语句的作用相同,用来过滤数据。不同之处在于 prewhere 只支持*MergeTree 族系列引擎的表,首先会读取指定…

    技术杂谈 2023年7月10日
    061
  • 原来工作几年了,只用了数据校验的皮毛~

    不知不觉 Spring Boot专栏文章已经写到第十四章了,无论写的好与不好,作者都在尽力写的详细,写的与其它的文章不同,每一章都不是浅尝辄止。如果前面的文章没有看过的朋友,点击这…

    技术杂谈 2023年7月23日
    068
  • Python中的print()语句

    Python中print()语句的相关使用 介绍 print()函数可以将输出的信息打印出来,即发送给标准输出流。Python中可以直接使用print()函数,将信息展示在控制台 …

    技术杂谈 2023年7月24日
    0103
  • vue-router各个属性的作用及用法

    原文:https://www.cnblogs.com/goloving/p/9211358.html vue-router是vue单页面开发的路由,就是决定页面跳转的! Props…

    技术杂谈 2023年7月25日
    065
  • 【cartographerros】九:建图和定位

    通过前面的介绍了,我们可以自己实现数据的发布,然后在cartographer进行建图和定位,并调整参数查看效果。本节就将介绍在cartographer用自己的数据进行建图和定位(在…

    技术杂谈 2023年7月24日
    081
  • 面向对象编程-基础

    面向对象是一种”建模思想” 把现实中的各种事物”虚拟化到程序中”(定义类就是一种封装) 类:对现实生活中一类具有共同属性和行为的事物…

    技术杂谈 2023年6月21日
    083
  • 数学基础之概率

    本文主要介绍概率与数理统计中的一些常见的基本概念。 对于随机试验,尽管在每次试验之前不能预知试验的结果,但是试验的所有可能结果集合是已知的,我们将随机试验E的所有可能的结果组成的集…

    技术杂谈 2023年5月31日
    080
  • 使用Gulp和Browserify创建多个绑定文件

    Browserify是一个Javascript的绑定工具,帮助我们理顺module之间的依赖关系。Gulp用来优化workflow。两者的共同点都是使用流,但在使用流方面也有不同之…

    技术杂谈 2023年5月31日
    086
  • Dubbo2.7源码详解

    Spring与Dubbo整合原理与源码分析 【1】注解@EnableDubbo 【2】注解@EnableDubboConfig 1)DubboConfigConfiguration…

    技术杂谈 2023年7月24日
    062
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球