ЗАДАЧИ
problems.ru |
О проекте
|
Об авторах
|
Справочник
Каталог по темам | по источникам | |
|
Задача 76225
УсловиеТа же задача, но количество операций должно быть порядка
РешениеНас интересуют точки решётки (с целыми
координатами) в первом квадранте, попадающие внутрь круга
радиуса
Идея решения состоит в том, чтобы " двигаться вдоль его границы", спускаясь по верхнему его краю, как по лестнице. Координаты движущейся точки обозначим <k,l>. Введём ещё одну переменную s и будем поддерживать истинность такого условия: <k,l> находится сразу над k-ым столбцом;Формально:
k := 0; l := 0; while <0,l> принадлежит X do begin | l := l + 1; end; {k = 0, l - минимальное среди тех l >= 0, для которых <k,l> не принадлежит X} s := 0; {инвариант: И} while not (l = 0) do begin | s := s + l; | {s - число точек в столбцах до k-го включительно} | k := k + 1; | {точка <k,l> лежит вне X, но, возможно, её надо сдвинуть | вниз, чтобы восстановить И} | while (l <> 0) and (<k, l-1> не принадлежит X) do begin | | l := l - 1; | end; end; {И, l = 0, поэтому k-ый столбец и все следующие пусты, а s равно искомому числу}Оценка числа действий очевидна: сначала мы движемся вверх не более чем на Источники и прецеденты использования |
© 2004-...
МЦНМО
(о копирайте)
|
Пишите нам
|
![]() |
Проект осуществляется при поддержке