Var f,f1:text;
s:string;
begin
assign(f,'f.txt');
reset(f);
assign(f1,'f1.txt');
rewrite(f1);
while not eof(f) do
begin
readln(f,s);
{есть функция:
function TrimRight(s: string): string;
Возвращает строку с удаленными конечными пробелами
Можно и так, как написано ниже}
while s[length(s)]=' ' do delete(s,length(s),1);
writeln(f1,s);
end;
close(f);
close(f1);
end.
846 | 423 | 211 | 105| 52 | 26 | 13 | 6 | 3 | 1
---------------------------------------------------------
0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 число записывается справа налево:
846₁₀= 1101001110₂= 1516₈ = 34E₁₆
1533 | 716 | 358 | 179 |89 | 44| 22| 11 | 5 | 2 | 1
--------------------------------------------------------------
1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1| 0 | 1
1533₁₀=10110011001₂ = 2775₈ = 5FD₁₆
1101001110₂ + 10110011001₂ =100011100111₂
1516₈ + 2775₈ = 4513₈
34E₁₆ + 5FD₁₆ = 94B₁₆
Все элементы будут равны единице.
Сначала они будут заполнены значением, большим своего индекса на 1, а потом каждому элементу, начиная со второго (который А[1]) будет присвоено значение предыдущего элемента и 1 распространится везде.
Для проверки была написана программа с отладочной выдачей.
var
a:array[0..10] of integer;
i:integer;
begin
for i:=0 to 10 do begin a[i]:=i+1; Write(a[i],' ') end;
Writeln;
Write(a[0],' ');
for i:=1 to 10 do begin a[i]:=a[i-1]; Write(a[i],' ') end
end.
Результаты
1 2 3 4 5 6 7 8 9 10 11
1 1 1 1 1 1 1 1 1 1 1
Ответ: 3)
<h3>PascalABC.NET 3.4.2, сборка 1837 от 11.10.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
ReadSeqIntegerWhile(t -> t > -1).AdjacentGroup.Where(t -> t[0] = 0)
.Select(t -> t.Count).Max.Println
end.