百練2706 麥森數

2021-08-20 22:16:58 字數 524 閱讀 5903

此題的關鍵是計算2^p,採用移位的方式不斷計算p的二進位制表示,進而通過乘以對應的2的次冪得到結果。

此外,此題用1個陣列元素表示十進位制的4位數字,即採用萬進製(10000進製),提高高精度計算的速度。

主要是實現高精度乘運算。

此題也讓我發現的我的codeblocks 16.01編譯環境有問題orz。

#include#include#include#define len 125     //每個元素存放十進位制的4位數字

//高精度乘法a x b,結果的末500位存放在a中

void mul(int * a, int * b)}}

memcpy(a,c,sizeof(c));

}int main()

p>>=1;

mul(npow,npow);

}res[0]--; //最後減1

for(int i=len-1;i>=0;i--)

else

}return 0;

}

codeves天梯 麥森數

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

2017 4 16 麥森數 思考記錄

這個題作為普及組的題簡直喪心病狂,就然在03年的普及 小學 初中 組考察 對數 和 高精快速冪 2的n次方位數 n log10 2 下取整 1 gjksm易錯點 1 乘的時候進製和最後加的時候進製不一樣 小技巧 因為2的n次方個位沒有是0的,所以只個位 1即可 碼 include include i...

麥森數 高精度 快速冪

快速冪模板 求a b int ans 1 while b 0 printf d n ans 高精度乘高精度模板 void cheng int a,int b c 0 a 0 b 0 for int i 0 i10 while c k 0 c 0 如下 include include includeu...