Task 67. Количество точек

Task 67. Количество точек

UniLecs

Задача: дан отрезок, начало и конец отрезка заданы целочиселнными координатами.  Нужно подсчитать количество точек отрезка, ктр имеют целочисленные координаты, включая начало и конец.

Входные данные:

X1, Y1, X2, Y2 - координаты начала и конца отрезка, значения по модулю не превышают 10000.

Вывод: кол-во точек отрезка с целочисленными координатами, включая начало и конец.

Пример:

(2, 8), (10, 0)

Вывод: 9

пример

Идея: для решения этой задачи достаточно вычислить НОД - наибольший общий делитель, а именно количество целочиселнных точек для отрезка (X1, Y2), (X2, Y2) будет равно:

1 + НОД(abs(X2 - X1), abs(Y2 - Y1))

Для примера разберем отрезок из условия:

1 + НОД(abs(10 - 2), abs(0 - 8)) = 1 + НОД(8, 8) = 1 + 8 = 9

Реализация:

реализация на C#

https://gist.github.com/unilecs/cac5cae96e7cb4bfe89df809b5b2fe22


Тест:

https://dotnetfiddle.net/u4eI1C

Report Page