1)
var n,i,d,z:integer; s:real;
begin
readln(n);
s:=1; d:=1; z:=1; i:=1;
repeat
i:=i+1;
d:=d*2;
z:=-z;
s:=s+z/d;
until i>=n;
writeln('s = ',s);
end.
2)
var n,i,d,z:integer; s:real;
begin
readln(n);
s:=1; d:=1; z:=1; i:=1;
while i<n do
begin
i:=i+1;
d:=d*2;
z:=-z;
s:=s+z/d;
end;
writeln('s = ',s);
end.
3)
var n,i,d,z:integer; s:real;
begin
readln(n);
s:=1; d:=1; z:=1;
for i:=2 to n do
begin
d:=d*2;
z:=-z;
s:=s+z/d;
end;
writeln('s = ',s);
end.
Пример:
5
s = 6.875000000000000e-01
// PascalABC.NET 3.1, сборка 1184 от 02.03.2016
begin
var m:=2*2;
var s:=m;
for var i:=3 to 10 do begin m*=2; s+=m end;
Writeln(s)
end.
<u><em>Тестовое решение:</em></u>
2044
Вот ОДНО из ВОЗМОЖНЫХ рассуждений (вероятно, можно уловить и другие алгоритмы):
В числе А - одна единица
В числе Б - две единицы
В числе В - три единицы
В числе Г - две единицы (то есть поехали назад...)
Значит в числе Д - ОДНА единица, т.е. Д - 100
Var
i, n: integer;
a, s: real;
begin
readln(n);
a := 1;
s := a;
for i := 2 to n do
begin
a := a * -(i - 1) / i;
s := s + a;
end;
writeln(s:10:6);
end.
Ну раз значения всего 2, то 2 ^ 5 = 32 последовательности.