• Предмет: Информатика
  • Автор: pixelpixelivich
  • Вопрос задан 4 месяца назад

Вася строит дом

Мальчик Вася живёт на координатной прямой. На этой прямой в точке 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
С++

Ответы

Ответ дал: XxBigGim
0

Ответ:

При вводе "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)Вывести результат (координату точки и расстояние до ближайшего киоска).

Вас заинтересует