Ввод координат по диапазону от -n до 0
Есть задание:
Даны действительные числа (хі,уі),і = 1,2 .. n, - координаты точек на плоскости. Определить количество точек, что попадают в заштрихованную область заданого цвета(29 вариант).
И есть рисунок:
Я рассчитал формулы для заштрихованой области, и также вывел одну из возможных точек, которая может попадать в область(-9,-2) при радиусе круга 5.
Пытаюсь сделать динамический ввод координа по диапазону (-n;0) но получается какая то каша и ничего не находит.
def circle_v29():
"""Дан радиус и длинна последовательности. Найти количество точек
входящих в заштрихованую область"""
try:
r = int(input("r круга = "))
n = int(input("Введите отрицательное n, для диапазона (-n;0) = "))
x = 0
y = 0
count = 0
for i in range(n, 0):
x += n
y += n
if (x+r)**2 + y**2 <= r**2 and y <= -r and x-2*r <= 0:
count += 1
n += 1
elif (x+r)**2 + y**2 <= r**2 and x <= -2*r and x-r <= 0:
count += 1
n += 1
else:
continue
print(f"Количество точек,входящих в область: {count}")
except:
print("INTEGER expected!")
Подскажите,пожалуйста что я делаю не так?
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
можно вот так:
r = int(input("r круга = "))
count = 0
for x in range(0, r + 1):
for y in range(0, r + 1):
# не рассматриваем точки вне круга
if x * x + y * y > r * r:
continue
# не рассматриваем точки внутри треугольника
if y <= r - x:
continue
count += 2
print(count)
поскольку ситуация симметричная, то можно рассмотреть только четверть, а результаты удвоить
