Количество точек на границе многоугольника
Дан многоугольник с целочисленными координатами вершин.
Необходимо найти количество точек с целочисленными координатами на его границе.
Количество точек на отрезке с целочисленными координатами равно НОД (dx, dy) + 1. Значит, количество точек на границе многоугольника равно SUM (HOД(dxi, dyi) + 1) - n = SUM HOД(dxi, dyi).
НОД - Наименьший Общий Делитель.
Асимптотика O(n).
Листинг C++
long long count_B (vector < point > &p)
{
int i, j;
long long count = 0;
for (i = 0; i < p.size(); ++ i)
{
j = (i + 1) % p.size();
count += gcd (p[j].x - p[i].x, p[j].y - p[i].y);
}
return count;
}
16:01
21.07.2009
По всем вопросам обращаться: rumterg@gmail.com