洛谷P1045 麥森數 快速冪 高精度乘法

2021-09-10 07:36:41 字數 925 閱讀 1412

題目大意:計算2p−

12^p-1

2p−1

的位數和最後500位數字(用十進位制高精度數表示)

題目分析:

1、首先是計算位數

我們不難發現,2p−

12^p-1

2p−1

和2

p2^p

2p在十進位制下的位數是相同的,因此,我們只需要計算2

p2^p

2p的位數,我們不妨設

1 0k

=2

p10^k=2^p

10k=2p

那麼k =p

∗log

102

k = p*log_2

k=p∗lo

g10​

2再將k向下取整就ok了

2、計算最後500位數字

這個就是 我不會的 簡單的高精度乘法了

(我剛開始沒有算複雜度,,,以為是個水題,打了個暴力)

#include

#include

#include

#include

using

namespace std;

int f[

1005

],ans[

1005

],rans[

1005];

//乘法需要開2倍空間

void

solve

(int a,

int b)

return;}

intmain()

ans[0]

--;//不用擔心最後一位是0的情況

for(

int i=

499;i>=

0;i--

)return0;

}

洛谷 P1045 麥森數(高精,位數公式)

求2p 1的最後500位數 p 3100000 以前碰到高精都是python 好 想寫一下c的高精,第一次寫,踩了好多坑 這個題是高精乘法 快速冪 第一小問是求位數,可以用乙個求位數的公式 k log10 n 1 2p 1和2p的位數是一樣的,所以直接求2p的位數即可 log10 2p p log1...

洛谷P1045 麥森數

形如2 12p 1的素數稱為麥森數,這時p p 一定也是個素數。但反過來不一定,即如果p p 是個素數,2 12p 1不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的乙個是p 3021377p 3021 377 它有909526位。麥森數有許多重要應用,它與完全數密切相關。任務 從檔...

洛谷P1045麥森數

題幹很簡單,就是要求2的p次方 1的位數和後500位。首先我們肯定不會去把這個數算出來,不然鐵t,那怎麼算位數呢?於是我們想一想數學方法因為2的p次方個位數必不為0,所以2的p次方 1的位數和2的p次方位數相同。又有10的n次方是n 1位數所以轉化一下2的p次方就是10的log10 2 p 1位數,...