📄 mason.pas
字号:
program mason(input,output);
var
n:longint;
i,j:longint;
out:array[1..500] of longint;
sta:array[1..1000] of longint;
procedure solve(n:longint);{用二分法求2的n次幂}
begin
if n=0 then
exit;
solve(n div 2); {二分}
for i:=1 to 500 do
for j:=1 to 500 do
if n mod 2=0
then {如果是偶数,就计算平方}
sta[i+j-1]:=sta[i+j-1]+out[i]*out[j]
else {是奇数就计算平方并且*2}
sta[i+j-1]:=sta[i+j-1]+out[i]*out[j]*2;
for i:=1 to 500 do
begin
out[i]:=sta[i] mod 10;
sta[i+1]:=sta[i+1]+sta[i] div 10;
end;
for i:=1 to 1000 do sta[i]:=0
end;
begin
assign(input,'mason.in');
assign(output,'mason.out');
reset(input);
rewrite(output);
readln(n);
writeln(trunc(ln(2)/ln(10)*n)+1);{输出位数,用对数算后+1}
out[1]:=1;
solve(n);
for i:=500 downto 2 do
begin
write(out[i]);
if i mod 50=1 then writeln{换行}
end;
writeln(out[1]-1);
close(input);
close(output)
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -