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

奔牛网络推广推推蛙seo顾问

奔牛网络推广,推推蛙seo顾问,京东网站是谁做的,南通宏仁建设工程有限公司招聘网站倍增,顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,极⼤地优化时间复杂度 P1226 【模板】快速幂 - 洛谷 利⽤「⼆进制」以及「倍增」的思想,通过⼀个具体的例⼦说明,⽐如 3 11 3^{11} 311 幂运算的运算法则&#x…

倍增,顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,极⼤地优化时间复杂度

P1226 【模板】快速幂 - 洛谷

利⽤「⼆进制」以及「倍增」的思想,通过⼀个具体的例⼦说明,⽐如 3 11 3^{11} 311

  • 幂运算的运算法则: a b + c = a b × a c a^{b+c}=a^{b} \times a^{c} ab+c=ab×ac
  • 通过⼀个数的⼆进制表⽰,可以写成若⼲数相加
    11 = ( 1011 ) 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 11=(1011)_{2}=1 \times 2^{3} +0 \times 2^{2} + 1 \times 2^{1}+1 \times 2^{0} 11=(1011)2=1×23+0×22+1×21+1×20
  • 两者结合:
    3 11 = 3 ( 1011 ) 2 = 3 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 = 3 8 × 3 0 × 3 2 × 3 1 3^{11}=3^{(1011)_{2}}=3^{1\times 2^{3}+0 \times 2^{2} + 1 \times 2^{1}+1 \times 2^{0}}=3^{8}\times3^{0} \times 3^{2} \times 3^{1} 311=3(1011)2=31×23+0×22+1×21+1×20=38×30×32×31

如何快速算出 3 1 , 3 2 . . 3 log ⁡ 2 n 3^{1}, 3^{2} .. 3^{\log_{2}n} 31,32..3log2n
其实很简单,从前往后看,后⼀个数是前⼀个数的平⽅
3 1 = 3 3^{1} = 3 31=3
3 2 = 3 1 × 3 1 = 9 3^{2}=3^{1} \times 3^{1} = 9 32=31×31=9
3 4 = 3 2 × 3 2 = 81 3^{4}=3^{2} \times 3^{2} = 81 34=32×32=81
3 8 = 3 4 × 3 4 = 6561 3^{8}=3^{4} \times 3^{4} = 6561 38=34×34=6561
只需将11的⼆进制表⽰中1 所对应的幂乘起来即可

如何实现这个算法,以 a b a^{b} ab为例

  • ⼀边提取b 的⼆进制表⽰中的每⼀位
  • ⼀边让a = a ∗ a ,不断变成之前的平⽅(倍增的思想)
  • 在提取b 的⼆进制表⽰时,如果这⼀位是1 ,就乘上对应位置的权值

取模运算的规则:

  1. 在计算过程中,只有加法和乘法时,如果最后要对整个结果取模,取模可以放在任意的位置
  2. 在计算过程中,存在减法时,结果可能出现负数,此时如果需要补正,就需要模加模的技巧来补正
  3. 在计算过程中,存在除法的时候,过程中取模是会出现错误的,需要求逆元
#include <bits/stdc++.h>
using namespace std;typedef long long LL;
LL a, b, p;LL qpow(LL a, LL b, LL p)
{LL ret = 1;while (b){if (b & 1) ret = ret * a % p;a = a * a % p;b >>= 1;}return ret;
}int main()
{cin >> a >> b >> p;printf("%lld^%lld mod %lld=%lld", a, b, p, qpow(a, b, p));return 0;
}
P10446 64位整数乘法 - 洛谷

跟「快速幂」的思想⼀致,我们通过⼀个具体的例⼦模拟⼀下算法的流程,⽐如3 × 11

  • 乘法的分配率: a × ( b + c ) = a × b + a × c a × (b + c) = a × b + a × c a×(b+c)=a×b+a×c
  • 通过⼀个数的⼆进制表⽰,可以写成若⼲数相加
    11 = ( 1011 ) 2 = 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 11 = (1011)_{2}=1 × 2^{3}+ 0 × 2^{2} +1 × 2^{1}+1×2^{0} 11=(1011)2=1×23+0×22+1×21+1×20
  • 两者结合:
    3 × 11 = 3 × ( 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 ) = 3 × 8 + 3 × 0 + 3 × 2 + 3 × 1 3 × 11=3× (1 × 2^{3}+ 0 × 2^{2} +1 × 2^{1}+1×2^{0})=3 × 8+3×0+3×2+3×1 3×11=3×(1×23+0×22+1×21+1×20)=3×8+3×0+3×2+3×1

如何实现这个算法呢,以a × b 为例

  • ⼀边提取b 的⼆进制表⽰中的每⼀位;
  • ⼀边让a = a + a ,不断变成之前的两倍(倍增的思想);
  • 在提取b 的⼆进制表⽰时,如果这⼀位是1 ,就加上对应位置的权值
#include <bits/stdc++.h>
using namespace std;typedef long long LL;
LL a, b, p;LL qmul(LL a, LL b, LL p)
{LL sum = 0;while (b){if (b & 1) sum = (sum + a) % p;a = (a + a) % p;b >>= 1;        }return sum;
}int main()
{cin >> a >> b >> p;cout << qmul(a, b, p) << endl;return 0;
}
http://www.dtcms.com/wzjs/53477.html

相关文章:

  • 自己做的网站怎么上传到网络seo排名优化方式
  • 简单网站的制作怎样优化网站排名
  • 一级a做爰片迅雷网站优化网站打开速度
  • 武汉设计工程学院怎么样新网站 seo
  • 泸州建设厅官方网站百度推广客户端教程
  • 为什么要找对做网站的公司新手怎么引流推广推广引流
  • 小游戏开发软件浙江seo推广
  • 杭州桐庐网站建设自助建站申请
  • 花生壳动态域名做网站网站首页模板
  • 免费个人网站空间申请成都seo培
  • 工程造价信息网官网登录中国seo
  • 网站被百度降权了怎么办2022社会热点事件及看法
  • 广西柳州网站建设公司nba最新消息新闻报道
  • 购物网站后台管理系统模板百度搜索引擎竞价排名
  • 怎样找公司做单的网站怎么制作网站详细流程
  • 保定公司做网站域名在线查询
  • p2p免费网站建设兰州网络推广优化怎样
  • 电子商务网站建设实训内容做网站优化哪家公司好
  • 元器件商城网站建设万网域名续费
  • 深圳的设计网站大全营销网络营销
  • 成都高新区网站建设网络推广公司专业网络
  • 个人备案的网站做企业内容网站seo资讯
  • 网站制作方案怎么写网络营销案例分享
  • iis发布网站 主目录重定向到url广州优化营商环境条例
  • 网站开发时app打开很慢网站案例分析
  • 运城网站推广下拉框关键词软件
  • 重庆网站建设服务网站推广计划方案
  • 丹东网站建设平台经典软文案例50字
  • ai做网站步骤附近电脑培训速成班一个月
  • 做网站备案成功之后改怎么操作百度客服24小时人工服务在线咨询