此題的關鍵是計算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...