Вася строит дом
Мальчик Вася живёт на координатной прямой. На этой прямой в точке A
располагается школа, а в точке B
— любимый Васин компьютерный клуб. Также в точках …,−d,0,d,…,k⋅d,…
, где k
— произвольное целое число, а d
— чётное натуральное число, расположены киоски с мороженым. Вася хочет построить дом в некоторой точке с целой координатой. При этом, ему хочется, чтобы расстояние от дома до школы и от дома до компьютерного клуба было одинаковым. Если это вдруг невозможно, то он хочет, чтобы сумма этих расстояний была как можно меньше, а также чтобы расстояния отличались как можно меньше друг от друга. Если под Васин дом подходит несколько вариантов точек, то он выберет ту, расстояние от которой до ближайшего киоска с мороженым минимально. Помогите Васе выбрать точку, где строить дом, а также выведите расстояние до ближайшего киоска с мороженым. Вася может строить дом в точке, где уже есть другие строения.
Входные данные
В единственной строке входных данных заданы три числа — A
, B
и d
. Гарантируется, что A
и B
— целые числа, по модулю не превышающие 2⋅109
, A≠B
. d
— чётное натуральное число, 2≤d≤2⋅109
.
Выходные данные
В единственной строке выходных данных выведите два целых числа — координату точки, где Васе необходимо построить дом, и расстояние до ближайшего киоска с мороженым.
ВВОД
1 5 4
ВЫВОД
3 1
С++
Ответы
Ответ:
При вводе "1 5 4", программа выведет "3 1", что означает, что Васе необходимо построить дом в точке с координатой 3, и ближайшее расстояние до киоска с мороженым будет "1"
Объяснение:
Для решения этой задачи, можно следовать следующему алгоритму:
1) Найти координату точки, где расстояние от дома до школы и до компьютерного клуба одинаково. Это можно сделать, вычислив среднее арифметическое между A и B: (A + B) / 2. Обозначим эту точку как "C".
2)Найти ближайший к "C" киоск с мороженым. Для этого вычислим остаток от деления "C" на "d": remainder = C % d. Если remainder равен нулю, значит "C" уже является точкой с киоском, и ближайшая точка будет равна "C". В противном случае, ближайшая точка с киоском будет равна "C + d - remainder" (или "C - remainder", если remainder > d/2).
3)Вывести результат (координату точки и расстояние до ближайшего киоска).