Мы находимся на острове, на котором закопан клад. Мы находимся в точке с координатами (0, 0) и смотрим на север. Нам известно, где закопан клад, но этого мало: остров полон опасностей, и нужно перемещаться строго по указаниям карты, которая, к счастью, тоже имеется в нашем распоряжении. Мы хотим найти клад как можно скорее. Известны координаты клада и указания, которым нужно следовать, чтобы его найти. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа. Слово — одно из набора: «вперёд», «налево», «направо», «разворот».
После слова «вперёд» следует количество шагов, которое следует пройти в том направлении, куда мы в данный момент смотрим. Слова «налево» или «направо» означают, что нужно изменить направление взгляда под прямым углом, «разворот» — что прямо на обратное. Команда «стоп» означает остановку.
Найдите минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу.
Формат ввода
Сначала вводятся два числа на отдельных строчках: координаты клада по оси икс (запад-восток) и игрек (юг-север).
Затем следует некоторое количество указаний карты. Каждое указание карты состоит из одного слова и, возможно, одного натурального числа на отдельной строке. Слово — одно из набора: «вперёд», «налево», «направо», «разворот» или «стоп».
Формат вывода
Программа выводит на отдельных строках минимальное количество указаний карты, которое нужно выполнить, чтобы прийти к кладу, и направление взгляда в этот момент (одно из: «север», «юг», «запад», «восток»). Гарантируется, что карта приводит к кладу.
A,B,m1,m2:integer;
Begin
Write('A = ');Read(A);
Write('B = ');Read(B);
A:=abs(A);
B:=abs(B);
m1:=A mod 10;
A:=A div 10;
if A mod 10 > m1 then m1:=A mod 10;
A:= A div 10;
if A mod 10 > m1 then m1:=A mod 10;
m2:=B mod 10;
B:=B div 10;
if B mod 10 > m2 then m2:=B mod 10;
A:= B div 10;
if B mod 10 > m2 then m2:=B mod 10;
WriteLn('Максимальная цифра в A = ',m1);
WriteLn('Максимальная цифра в B = ',m2);
End.
Var
i:integer;
Begin
Write('Кратные 4: ');
For i:= 1 to 1000 do
if i mod 4 = 0 then Write(i,' ');
WriteLn;
Write('Кратные 8: ');
For i:= 1 to 1000 do
if i mod 8 = 0 then Write(i,' ');
WriteLn;
Write('Кратные 2: ');
For i:= 1 to 1000 do
if i mod 2 = 0 then Write(i,' ');
WriteLn;
Write('Кратные 4,8,2: ');
For i:= 1 to 1000 do
if i mod 8 = 0 then Write(i,' ');
WriteLn;
End.