[蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)
題目描述
形如2p-1的素數稱為麥森數,這時P一定也是個素數。但反過來不一定,即如果P是個素數,2p-1不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的一個是P=3021377,它有909526位。麥森數有許多重要應用,它與完全數密切相關。
任務:從文件中輸入P(1000< P< 3100000),計算2p-1的位數和最后500位數字(用十進制高精度數表示)
輸入
文件中只包含一個整數P(1000< P< 3100000)
輸出
第一行:十進制高精度數2P-1的位數。
第2-11行:十進制高精度數2p-1的最后500位數字。(每行輸出50位,共輸出10行,不足500位時高位補0)
不必驗證2p-1與P是否為素數。
樣例輸入
1279
樣例輸出
386
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000104079321946643990819252403273640855
38615262247266704805319112350403608059673360298012
23944173232418484242161395428100779138356624832346
49081399066056773207629241295093892203457731833496
61583550472959420547689811211693677147548478866962
50138443826029173234888531116082853841658502825560
46662248318909188018470682222031405210266984354887
32958028878050869736186900714720710555703168729087
思路:單純的用java大數+快速冪,還是會有三個樣例超時。是因為在快速冪的時候,如果數字過大,還是會很耗時的。因為只要求求500位,那么我們就一直取余10的500次方,這樣就一直是最大500位。但是這樣的話,數字長度就不能保證了。其實麥森數的數字長度可以直接計算出來。計算步驟如下,圖片來源:
代碼如下:
努力加油a啊,(o)/~
總結
以上是生活随笔為你收集整理的[蓝桥杯][算法训练VIP]麦森数(Java大数+快速幂)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将小程序的logo换成属于自己的头像
- 下一篇: stream() 求和_Java教程:J