慢速幂(转自ooo于Vjudge上的同名博客)

ex_tjy 慢速幂(极不正经版)

感谢tjy大佬提供思路

本文将为大家伙介绍由tjy大神提出并由ooo蒟蒻证明的慢速幂
如不是闲得慌,本着珍爱生命的原则,
建议:

请勿浏览



并不华丽的分界线



正文


引子:

OVO
听说过二分吗,少年?
听说过快速幂吗,少年?
那么,如果把他们结合起来,又会发生什么呢?
答案是:慢速幂;
支持unsigned long long范围内$\Theta(64)$计算

机理:

OVO
对答案区间进行二分
定义$minn=1,maxn=inf$(极大值)
我们可以考虑:

  1. 对于$a^b=a^b$,可推得:$\log_a a^b=b$;
  2. 由换底公式得:$\lg a^b \div \lg a=b$;
  3. 由等式的基本性质得:$\lg a^b=b \times \lg a$;
    于是乎,我们会开心的发现,我们已经可以通过二分枚举$a^b$求解了
    完结撒~~

撒什么花
我们还没解释为什么它是慢速幂呢好吧!!!
因为毕竟是二分,复杂度为$\Theta(log_2 n)$;
有因为n被我们严格限制为$2^{64}$;
故时间复杂度恒为$\Theta(64)$
故亦被miemeng称为"恒速幂";
易证:对于任意 $n \neq 1$且$n$属于$N^*$ ,$n^{64} \geqslant 2^{64}$;
所以暴力连乘时间复杂度$\Theta(n \leqslant 64)$
我们可爱的二分慢速幂效率等于连乘当且仅当

$a=2,b=64$

故称慢速幂;
至于应用?
联系复杂度分析??
或许也只有这一点用处了…………………….
那为什么还会打这么多字来介绍这毫无用处的东西(懵.png)


要知道我们要有探索精神, 既然这种想法被提出了 我们至少也要证明它是无用的 否则还不如不要提出来(毫无征兆的的大段鸡汤)
…………………………….
所以,完结撒花!

不要因为我浪费了大家的生命打我——ooo

(原文有删改)

posted @ 2019-07-18 19:01  HZOI_Admin  阅读(181)  评论(0编辑  收藏  举报