Залина и Алан не могут ни секунды прожить без разговоров и не хотят прерывать звонок, даже пока идут навстречу друг другу. Их путь проходит через холмистую местность, но мобильная связь в этом районе работает только тогда, когда оба собеседника находятся на одинаковой высоте. Помогите Залине и Алану встретиться, не прерывая звонок.
Путь между Залиной и Аланом имеет форму ломаной (по оси абсцисс отложена горизонтальная координата, ось ординат отражает высоту местности в данной точке):
В начале пути Залина находится на левом конце ломаной, Алан — на правом. За один ход Залина и Алан с одинаковой скоростью проходят расстояние в одну клетку налево или направо, перемещаясь по ломаной. Залина и Алан могут двигаться в разные стороны или не двигаться вовсе.
Постройте маршрут, который позволит Залине и Алану встретиться, оставаясь на одинаковой высоте на всём протяжении пути. Чем меньше ходов потребуется при этом, тем больше баллов вы получите.
Ответ запишите в виде нескольких строк, состоящих из двух символов каждая. Для записи каждого перемещения используйте ровно два символа. Первый символ — ход Залины, второй — ход Алана. Символ «<» (знак «меньше») означает движение налево, символ «>» (знак «больше») — движение направо, символ «=» (знак равенства) — отсутствие движения персонажа на данном ходе. Одна строка соответствует одному перемещению Залины и Алана. Собеседники не могут выходить за пределы заданной ломаной.
Например, следующий ответ:
означает, что на первом ходе Залина движется направо, Алан — налево. На втором ходе Залина стоит на месте, а Алан движется направо. Этот ответ не может быть началом правильного решения, потому что на втором ходе Залина и Алан окажутся на разной высоте.
1 Ответ
Решение:
Залина: <>=Алану: >
Залина: <=Алану: <
(ход) (высота)
- >< 1
- >< 2
- >< 3
- << 2
- << 1
- >< 2
- << 1
- << 0
- >< 1
- >< 2
- =< 2
- >< 3
- >> 2
- >< 3
- >> 2
- => 2
- >> 1
- >< 2
- =< 2
- >< 3
- << 2
- >< 3
- >< 4
- >< 3
- >< 2
#include <iostream>
using namespace std;
int calc(int x) {
int a = x % 10;
int b = x / 10;
return x + a — b;
}
int main() {
int x = 12;
for (int i = 1; i <= 1024; i++) {
x = calc(x);
cout << i << » -operation ==> » << x << endl;
}
}