begin var a:=ReadInteger('Введите a от 1 до 30:'); if a<1 then begin Writeln('Неверно'); Exit end; var b:=ReadInteger('Введите b от '+a.ToString+' до 30:'); if (b<a) or (b>30) then begin Writeln('Неверно'); Exit end; var P:=ArrFill(30,0); for var i:=a-1 to b-1 do P[i]:=2; P.Println end.
Пример Введите a от 1 до 30: 2 Введите b от 2 до 30: 10 0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
// Внимание! Если программа не работает, обновите версию!
1. Решение без проверки вводимых данных
begin
var a,b:integer;
Read(a,b);
var P:=ArrFill(30,0);
for var i:=a-1 to b-1 do P[i]:=2;
P.Println
end.
Пример
2 10
0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2. Решение с контролем ввода
begin
var a:=ReadInteger('Введите a от 1 до 30:');
if a<1 then begin Writeln('Неверно'); Exit end;
var b:=ReadInteger('Введите b от '+a.ToString+' до 30:');
if (b<a) or (b>30) then begin Writeln('Неверно'); Exit end;
var P:=ArrFill(30,0);
for var i:=a-1 to b-1 do P[i]:=2;
P.Println
end.
Пример
Введите a от 1 до 30: 2
Введите b от 2 до 30: 10
0 2 2 2 2 2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
program z1;
var a,b,k: integer;
begin
k:=0;
read(a,b);
repeat
if a>b then a:=a mod b else b:=b mod a;
k:=k+1;
until (a=0) or (b=0);
write (a+b,' ',k)
end.
Объяснение:
Ввод чисел
Цикл с постусловием
Если a больше b, то заменяем a на остаток от деления на b, иначе заменяем b на остаток от деления на a
Увеличиваем k на 1 (считаем количество шагов цикла)
Заканчиваем цикл если a=0 или b=0
Выводим на экран НОД (сумму a+b, так как или a=0 или b=0, то их сумма это оставшееся число не равное 0) и количество шагов цикла (k)