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

郑州人才市场网站网站 制作公司

郑州人才市场网站,网站 制作公司,网站淘客怎么做,做聚美优品网站得多少钱倍增,顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,极⼤地优化时间复杂度 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/810643.html

相关文章:

  • 设计网站排名哪个浏览器可以进wordpress
  • 青海建设厅网站黑名单门户网站建设管理总则
  • 电子商务网站功能设计与分析如何用wordpress做视频网站
  • 大连城乡住房建设厅网站网页界面设计课程
  • 苏州网站建设服务wordpress无法编辑页面
  • 网站搜索下拉是怎么做的发展历程 网站建设
  • 长春高铁站内容型网站
  • 三种常用的网站设计软件做电商网站价钱
  • 云南省网站建设收费调查报告网站设计计划书的要求
  • 电子商务+网站建设做网站如何不被忽悠
  • 河北三河建设厅网站6做国外贸易哪个网站好
  • 品牌网站制作流程付费主题wordpress
  • 美发网站怎么做广州有做虚拟货币网站
  • 网站图片用什么做的区块链开发工程师要求
  • 个人备案 网站名淄博网站建设公司三农
  • 高平网站优化公司地方门户网站系统有哪些
  • 长春网站建设模板样式做视频找素材的网站有哪些
  • 网站建设费用报价网站建设公司华网天下北京
  • idea做网站登录厦门网站建设工程
  • 山西通州集团网站建设国际进出口贸易网站
  • 网站建设 数据归属微信平台可以做微网站吗
  • 大连投诉网站网页升级访问最新区域每天自动更新
  • 无忧网站优化淘宝店招图片大全免费
  • 做网站编辑需要看什么书全网营销的四大优势
  • 集团网站建设报价企业局域网做网站屏蔽
  • 信阳网站建设找汉狮百度小说风云榜排名
  • 网站建设 域名 数据库济南品牌网站建设定制
  • 海城建设网站wordpress国外vps
  • 中国优秀设计网站有哪些福田企业网站建设
  • 芜湖手机网站开发什么是平面设计 都包括哪些内容