vijos - P1223麥森數 (高精度乘法 + 分治 + python)

來源:互聯網
上載者:User

標籤:

P1223麥森數Accepted標籤:NOIP普及組2003[顯示標籤]描述

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

任務:從檔案中輸入P(1000<P<3100000),計算2^P-1的位元和最後500位元字(用十進位高精度數表示)

格式輸入格式

檔案中只包含一個整數P(1000<P<3100000)

輸出格式

第一行:十進位高精度數2^P-1的位元。

第2-11行:十進位高精度數2^P-1的最後500位元字。(每行輸出50位,共輸出10行,不足500位時高位補0)
不必驗證2^P-1與P是否為素數。

範例1範例輸入1[複製]
1279
範例輸出1[複製]
38600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087
限制

各個測試點1s

提示

十分簡單,別想複雜了!^_^

這道題目,要用的只是點就一個,高精度乘法運算,如果是C++的話,請用分治的方法,而對於java以及python而言,只需要直接調用對於高精度計算的函數即可,此處用了python的pow

計算位元很簡單,10^x + k = 2^p -1 -> log10(2^p - k - 1) == x - > int (log10(2) * p) + 1

python代碼:


#!/usr/bin/env python3# -*- coding: utf-8 -*-import mathimport sysP = int(raw_input())print int(math.log10(2) * P) + 1L = pow(2,P) - 1L = L % pow(10,500)#將數字減少,否則後面的取餘運算的時間會增大,導致逾時f = []for i in range(500):    f.append(L % 10)    L /= 10for i in range(500 - 1, -1, -1):    sys.stdout.write('%d' % f[i])    if i % 50 == 0:        print ''        


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

vijos - P1223麥森數 (高精度乘法 + 分治 + python)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.