[CODEVS 1087] 麦森数
生活随笔
收集整理的這篇文章主要介紹了
[CODEVS 1087] 麦森数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
描述
計(jì)算2P-1的位數(shù)和最后500位數(shù)字
分析
有一個(gè)公式,2^p的位數(shù)是p*lg2以十為底 2 的對(duì)數(shù). 證明 :
10^(p*lg2)的位數(shù)是p*lg2 + 1位.
那么2^p的位數(shù)就是p*lg2 + 1位. 因?yàn)?^p是絕對(duì)不會(huì)等于1000….000之類的數(shù)的, 所以2^p - 1位數(shù)和2^p一樣, 都是p*lg2 + 1位. 那么我們就可以在讀入 n 后快速使用 math 庫(kù)的 log 函數(shù)計(jì)算位數(shù), 而不需要后面高精去計(jì)算了. 因?yàn)楦呔闶菚?huì)超時(shí)的. 不過(guò)注意這里 log 計(jì)算是以 e 為底, 要使用換底公式 lg2 = log2 / log10.
其他的就是普通的高精了, 位數(shù)高于500位后截后500位計(jì)算即可. 但數(shù)組開(kāi)二倍吧.
代碼
https://code.csdn.net/snippets/607738
PS: 把 maxn 改成 1000 就可以做 CODEVS 2123 麥森數(shù) 2 了.
總結(jié)
以上是生活随笔為你收集整理的[CODEVS 1087] 麦森数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [BZOJ 1012] 最大数maxnu
- 下一篇: 路由器安置(Routing)