Решение задачи "Телепортация " с Acmp

С пояснением   Просмотров: 28


Вова попал на космическом корабле на бесконечную плоскую планету в точку с координатами (x1, y1). Вова, управляя кораблем, имеет возможность за одну секунду телепортироваться из точки (x, y) в одну из точек (x+C, y+C), (x+C, y-C), (x-C, y+C), (x-C, y-C), где C - произвольное натуральное число, которое можно изменять на каждом ходу.

Требуется написать программу, которая определит, через какое минимальное время Вове удастся достичь точки (x2, y2).

Код

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int x1, y1, x2, y2;
    cin >> x1 >> y1 >> x2 >> y2;
    if(abs(x1 - x2) == abs(y1 - y2))
        cout << 1;
    else
        if((x1 + y1) % 2 == (x2 + y2) % 2)
            cout << 2;
    else
        cout << 0;
    return 0;
}

         

 Администратор Photo Автор: Администратор


Если выполняется условие abs(x1 - x2) == abs(y1 - y2), значит эти точки находятся на одной диагонали и для достижения точки (x2, y2) нужен только один ход.
Теперь представим шахматную доску. Клетки чёрного цвета имеют кординату (x, y), где x + y = чётное.
А клетки белого цвета имеют кординату (x, y), где x + y = нечётное. Таким образом, если координаты (x1, y1) и (x2, y2) имеют одинаковый цвет, то мы можем достичь точку (x2, y2) за два хода.
Если два вышесказанных условия не выполняются, выводим 0.

Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться