快速幂运算 《挑战程序设计竞赛》
生活随笔
收集整理的這篇文章主要介紹了
快速幂运算 《挑战程序设计竞赛》
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2018-3-1
這里我就對(duì)數(shù)進(jìn)行說(shuō)明,并沒(méi)有對(duì)矩陣進(jìn)行求解。
求x^n,其中n是一個(gè)比較大的數(shù)如果用一般的方法的話(huà),我們會(huì)直接進(jìn)行累乘即可,時(shí)間復(fù)雜度是O(n),但是這個(gè)好像并不能滿(mǎn)足我們的要求,我們來(lái)分析一下:n的二進(jìn)制表示是這樣的,
n=t1*2^k1+t2*2^k2+t3*2^k3…,其中k1,k2,k3…為0,1,2…,t1,t2…只能是0或者1,附上代碼:
我們依次判斷n的二進(jìn)制表示的每一位的值,如果是0的話(huà),r不做任何操作,反之,如果是1的話(huà),那么當(dāng)前的值要乘上x(chóng),有人可能會(huì)問(wèn),這里的x是個(gè)什么東西,x每一次都要乘上它本身。比如說(shuō)n=10110,那么從左到右依次為:n=1*2^4+0*2^3+1*2^2+1*2^1+0*2^0,那么第i次循環(huán)前,x就為x^(2^(i-1)),那么當(dāng)?shù)趇位為1時(shí),就表示r的值要乘x^(2^(i-1))。
新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的快速幂运算 《挑战程序设计竞赛》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: The Constructor with
- 下一篇: 56 - I. 数组中数字出现的次数