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