52 lines
911 B
Plaintext
52 lines
911 B
Plaintext
Program Pi_Spigot;
|
|
|
|
const
|
|
n = 1000;
|
|
len = 10*n div 3;
|
|
|
|
var
|
|
i, j, k, q, x, nines, predigit: integer;
|
|
a: array[1..len] of longint;
|
|
|
|
begin
|
|
for j := 1 to len do
|
|
a[j] := 2; {Start with 2s}
|
|
nines := 0;
|
|
predigit := 0; {First predigit is a 0}
|
|
for j := 1 to n do
|
|
begin
|
|
q := 0;
|
|
for i := len downto 1 do {Work backwards}
|
|
begin
|
|
x := 10*a[i] + q*i;
|
|
a[i] := x mod (2*i - 1);
|
|
q := x div (2*i - 1);
|
|
end;
|
|
a[1] := q mod 10;
|
|
q := q div 10;
|
|
if q = 9 then
|
|
nines := nines + 1
|
|
else
|
|
if q = 10 then
|
|
begin
|
|
write(predigit+1);
|
|
for k := 1 to nines do
|
|
write(0); {zeros}
|
|
predigit := 0;
|
|
nines := 0
|
|
end
|
|
else
|
|
begin
|
|
write(predigit);
|
|
predigit := q;
|
|
if nines <> 0 then
|
|
begin
|
|
for k := 1 to nines do
|
|
write(9);
|
|
nines := 0
|
|
end
|
|
end
|
|
end;
|
|
writeln(predigit);
|
|
end.
|