快速幂是解决什么问题的怎么一种神奇的东西呢?

考虑这样一个问题,给出b和k,求出b^k的值,由于结果可能很大,再给出p,只要输出对p取模后的答案就好了。

那么,首先讲讲简单的暴力求法:

int query(int b,int k,int p){int rec=1,i;for(i=1;i<=k;i++){rec*=i;rec%=p;}return rec;
}

显然的做法,这里就不再赘述了。

这种做法是显然容易理解的,但是,它实在是不能满足大数据(这里指k特别大的时候)。那么,还有没有一种高效的算法呢?

下面来思考这样一个问题:
对于整数a和n,显然有a^(2*n)=(a^n)^2。那么我们的2*n次运算就可以优化成n+1了。其实呢,+1与否其实影响不是太大,主要是,现在发生了一件神奇的事情:我们的n次运算是可以被优化到log2(n)的啦啦啦~~~~

不过,对于a^(2*n+1),要是简单的 /2 的话,那么我们是不是就少算了一次呢?——>其实这 没有 没有 没有 关系~只要我们在存储答案的变量里乘上a,然后不就可以把 a^(2*n+1) 变成a^(2*n)了么?

显然,这种算法高效而且很容易懂的吧~

现在贴一贴代码就好了啊~

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){long long n,m,b,p,k,s=1;cin>>b>>p>>k;n=b,m=p;while(p>0){if(p%2==1){p--;s*=b;b%=k;s%=k;}if(p%2==0){p/=2;b=b*b;b%=k;}}b%=k;s%=k;cout<<n<<"^"<<m<<" mod "<<k<<"="<<s;return 0;
}

很神奇吧~那我们就等着进入下一步(矩阵乘法和它的快速幂)吧~

LG 的数学计划 ---- 第四步 快速幂相关推荐

  1. oracle bbed 使用,Oracle BBED使用 四步快速启动Oracle BBED

    Oracle BBED使用,四步快速启动Oracle BBED,环境:Oracle 10g RHEL 5.8,介绍:BBED全称为数据块浏览和编辑.用于对Oracle blo 环境:Oracle 10 ...

  2. 四步快速配置一个简单高效的文本生成图像基准模型 T2I baseline

    本文将介绍一个简单高效的文本生成图像基准模型,该基准模型是DF-GAN20版代码,清楚简单,实用性高,本基准模型代码在他的基础上经过少量简化和处理,虚拟环境也进行了打包,非常适合作为一个基线模型,然后 ...

  3. 1748. The Most Complex Number/LG的数学计划~~~持续更新ing(反素数求解)

    神奇的反素数, 首先定义 g(x) = x的约数个数 而反素数就是对于任意的0 < j < i 有g(j) < g(i)那么就称i为反素数 那么从这个定义中可以发现的是, 反素数一定 ...

  4. 【CodeForces - 1062C】Banh-mi (贪心,数学,找规律,快速幂)

    题干: JATC loves Banh-mi (a Vietnamese food). His affection for Banh-mi is so much that he always has ...

  5. 快速幂(二进制理解)

    一.题目背景 已知底数a,指数b,取模值mod. 求ans = a^b % mod 二.朴素算法(已知可跳过) ans = 1,循环从 i 到 b ,每次将 ans = ans * a % mo 时间 ...

  6. 阿里云asp主机 后台登录一直提示验证码错误_Lazada官方最全开店指南首发!云开店之入驻篇,快速入驻只需四步...

    近期后台收到了许多商家朋友关于如何入驻.运营Lazada店铺的问题咨询,平台特此针对Lazada入驻流程做了全面升级优化,同时整理出一套完整的新商家入驻解决方案 -- 极速云开店.作为"春风 ...

  7. ​简单四步,快速判断真菌是否成功侵染宿主植物

    撰文  |  同同 涉及植物研究的小伙伴们应该对于真菌植物共生都有所了解,根瘤菌和大豆的共生就是教科书级别的经典案例.植物与真菌的共生作为农业生产中一种重要的共生关系,一直是农业科研工作者的研究热点. ...

  8. 云信小课堂丨简单四步,快速搭建协同办公系统!

    Vol. 8 企业作为社会分工参与的主体,在自身发展以及内部协作中,势必会涉及到各类自有技术和商业信息的互动与交流,而这类信息由于有着高度的保密性和隐私性,所以如微信.QQ 等通用的即时通讯工具很难满 ...

  9. [转]告别写计划的烦恼!一页纸四步打造出一份牛逼的商业计划

    本文转自:https://mp.weixin.qq.com/s?__biz=MjM5Nzc3ODkyMA==&mid=2650196864&idx=1&sn=50112f937 ...

  10. xbox虚拟服务器,小白玩家看这里!国行Xbox One快速上手攻略 四步搞定

    小白玩家看这里!国行Xbox One快速上手攻略 四步搞定 2014-09-25 10:55:04来源:游戏下载编辑:评论(0) 还有4天时间国行Xbox One就将与大陆玩家见面了,想想还是有点小激 ...

最新文章

  1. 用GDB调试程序(四)
  2. mysql开启慢查询
  3. Android实现支付宝AR功能,Android RecyclerView 实现支付宝首页效果
  4. python开源考试_Github 上 10 个值得学习的 Springboot 开源项目
  5. java list排序工具类_java 之 Collections集合工具类排序
  6. kubernetes视频教程笔记 (33)-什么是 Helm
  7. python+源码如何编译安装mysql_Python源码安装cx_Oracle
  8. smb服务器速度测试_360路由器做smb服务器各种情况拷贝速度测试外加加装5g网卡...
  9. matlab中if筛选条件 如何使用方法,excel中多个if函数的套用_excel怎么按条件筛选...
  10. EJB2.0雨夜教程之一
  11. python:实现abbreviation缩写算法(附完整源码)
  12. 在xcode上看不到输出: stepping may behave oddly; variables may not be available
  13. web前端编程实战实例:制作静态京东首页
  14. iOS 拓展,icon,尺寸 开发系列 吕文翰
  15. 微信小程序ios端唤醒不了拨打电话或者部分电话拨打不了解决方案
  16. 解决vimdiff ‘E97: Cannot create diffs‘错误的一种方法
  17. Maven整合Nexus私服
  18. Linux系统大约多大,谁来说说linux系统一般多大
  19. 2014 年最热门的国人开发开源软件 TOP 100
  20. 通达信接口测速器的分类

热门文章

  1. 接收微信支付通知php代码,微信支付开发告警通知实例
  2. 二维码收款系统即时到账个人码免签支付平台
  3. EXCEL制作柱形图逆序的意义
  4. Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException问题 学习记录
  5. 能自行调节温度的新型织物 马里兰大学新发明引发讨论
  6. C语言处理中文字符,C语言中关于汉字的处理
  7. 推荐 | 南方医院历时4年构建新HIS系统
  8. MSM8953 Android 9.0 打开uart串口
  9. 回顾来路,不忘初心;心之所向,砥砺前行
  10. 我是如何给妹子优化 Windows 的?