題目描述形如2P-1的素數稱為麥森數,這時P一定也是個素數。但反過來不一定,即如果P是個素數,2P-1不一定也是素數。到1998年底,人們已找到了37個麥森數。最大的一個是P=3021377,它有909526位。麥森數有許多重要應用,它與完全數密切相關。任務:從文件中輸入P(1000<P<3100000),計算2P-1的位數和最后500位數字(用十進制高精度數表示)輸入輸出格式輸入格式:文件中只包含一個整數P(1000<P<3100000)輸出格式:第一行:十進制高精度數2^P-1的位數。第2-11行:十進制高精度數2^P-1的最后500位數字。(每行輸出50位,共輸出10行,不足500位時高位補0)不必驗證2^P-1與P是否為素數。輸入輸出樣例輸入樣例#1:1279輸出樣例#1:38600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010407932194664399081925240327364085538615262247266704805319112350403608059673360298012239441732324184842421613954281007791383566248323464908139906605677320762924129509389220345773183349661583550472959420547689811211693677147548478866962501384438260291732348885311160828538416585028255604666224831890918801847068222203140521026698435488732958028878050869736186900714720710555703168729087。題解:把在學校題庫上的麥森數輸出再改一下就行了var i,j,k,l,n,m:longint; a,b:array[0..1001] of longint;PRocedure mason1(p:longint);var i,j,k,l,i1,j1:longint;begin if p=0 then exit; mason1(p div 2); for i:=1 to 500 do for j:=1 to 500 do b[i+j-1]:=b[i+j-1]+a[i]*a[j]; if odd(p) then for i:=1 to 1000 do b[i]:=b[i]*2; for i:=1 to 500 do begin b[i+1]:=b[i+1]+b[i] div 10; b[i]:=b[i] mod 10; end; for i:=1 to 500 do a[i]:=b[i]; for i:=1 to 1000 do b[i]:=0;end;begin readln(n); a[1]:=1; writeln(trunc(n*ln(2)/ln(10))+1); mason1(n); a[1]:=a[1]-1; for i:=500 downto 1 do begin write(a[i]); if i mod 50=1 then writeln; end;end.