Автор
100 слов для студента
Абзац
100 слов для студента
Аудитория
100 слов для студента
100 слов для студента
Белорусский
100 слов для студента
Беседа
100 слов для студента
Беседовать
100 слов для студента
Библиотека
100 слов для студента
Брать
100 слов для студента
Будущий
100 слов для студента
Важный
100 слов для студента
Вариант
100 слов для студента
Ведомость
100 слов для студента
Век
100 слов для студента
Великий
100 слов для студента
Вернуть
100 слов для студента
Вести
100 слов для студента
Взять
100 слов для студента
Внимание
100 слов для студента
Вопрос
100 слов для студента
Время
100 слов для студента
Объяснение:
Поделитесь своими знаниями, ответьте на вопрос:
Паскаль. вова попал на космическом корабле на бесконечную плоскую планету в точку с координатами (x1, y1 вова, кораблем, имеет возможность за одну секунду телепортироваться из точки (x, y) в одну из точек (x+c, y+c), (x+c, y-c), (x-c, y+c), (x-c, y-c), где c - произвольное натуральное число, которое можно изменять на каждом ходу. требуется написать программу, которая определит, через какое минимальное время вове удастся достичь точки (x2, y2). входные данные входной файл input.txt содержит в первой строке числа x1, y1, во второй – x2, y2. все числа целые от нуля до 106. точки (x1, y1) и (x2, y2) не . выходные данные выходной файл output.txt должен содержать одно число – минимальное время телепортации. если такая телепортация невозможна, то вывести 0.
2. Естественно "развернуть" координаты так, чтобы "горизонтальное" и "вертикальное" направления были вдоль диагоналей. Это делается путем преобразования x' = x + y, y' = x - y.
3. В новых координатах корабль может ходить по горизонтали и вертикали, при этом в любую достижимую точку он придет не более чем за 2 шага. За 1 шаг он придет, если стоит в той же горизонтали или вертикали.
4. Для простоты сдвинем начало координат в начальную точку, тогда точка назначения будет иметь координаты x' = (x2 - x1) + (y2 - y1), y' = (x2 - x1) - (y2 - y1)
Решение, PascalABC.NET:
begin
var inf := OpenRead('INPUT.TXT');
var outf := OpenWrite('OUTPUT.TXT');
var x1, x2, y1, y2: longint;
read(inf, x1, y1, x2, y2);
if (x1 * y1 - x2 * y2) mod 2 = 0 then
begin
(x2, y2) := ((x2 - x1) + (y2 - y1), (x2 - x1) - (y2 - y1));
if x2 * y2 = 0 then
write(outf, 1)
else
write(outf, 2);
end
else
write(outf, 0);
close(inf);
close(outf);
end.