Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.
Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.
Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.
Program Progression;
[B]Uses CRT;[/B]
Const
N = [B]1000000[/B];
Type
MyArray = Array [1..N] of Integer;
Var
Save: MyArray; // массив циклов (кол-во нулей)
Val : MyArray; // массив значений (ноль = 1, число = кол-во нулей до 1)
Function Check(count: Integer): Boolean;
Var
i: Integer;
Begin
Check:= True;
For i:= 1 to count do
If (Val[i] = 0) then Begin //если хоть одна единица
Check:= False;
Exit;
End;
End;
Procedure Step(count: Integer); //процедура меняет значения переменных
Var
i: Integer;
Begin
For i:= 1 to count do Begin
If (Val[i] = 0) then
Val[i]:= Save[i]
else
Dec(Val[i]);
End;
End;
Var
F: text;
d: Integer; //последняя запись файла
k: Integer; //счетчик
count: Integer; //кол-во активных переменных
Begin
Assign(F, 'C:\f1.dat');
Rewrite(F);
Writeln(F, '3');
Close(F);
Val[1]:= 1; Save[1]:= 1; //иначе говоря, а = 0
Val[2]:= 0; Save[2]:= 2; // b = 1
Writeln;
[B]Writeln('Press any key to stop the program...');[/B]
K:= 0;
count:= 2;
[B]REPEAT[/B]
If Check(count) then begin // если проверка удачна, значит все нули
Reset(F);
Repeat
Readln(F, d); // доходим до конца файла
Until EoF(F);
Close(F);
d:= d + k; // число + счетчик шагов
Append(F);
Writeln(F, d); // пишем в файл
Close(f);
Inc(count); // берем еще одну переменную
Save[count]:= d - 1; // отнимаем 1 (новое кол-во нулей)
Val[count] := 0;
k:= 0;
End
Else Begin
Step(count); //если проверка не прошла, то двигаем значения по циклу
Inc(k);
End;
[B]UNTIL (count = N) or KeyPressed;[/B]
End.