


Дз по инфе подготовка к ЕГЭ
У меня есть задача: n пассажиров купили билеты на авиарейс, но при заходе в самолёт первые k человек сели на случайное место (им могло попасться и их изначальное место). После этих пассажиров стали заходить остальные, выбирая свое место, если оно свободно, если нет, то они выбирали случайное место. Господин заходит в самолет последним, найдите вероятность того, что ему досталось его место
И код к ней, но иногда дает отрицательные значения, в чем проблема
n = int(input())
k = int(input())
a = 0
x = n
for i in range(k):
a += 1/x
x = x-1
sumaostalnuh = 0
q = n - k
b = 0
for j in range(n - k -1):
b = a * (1/q) + (1/q) * b
sumaostalnuh += b
q -= 1
otvet = 1 - a - sumaostalnuh
print(a)
print(sumaostalnuh)
print(otvet)
Проблема в коде заключается в неправильном использовании переменной `b` внутри второго цикла. Вам нужно обновлять значение переменной `b` только после добавления в сумму `sumaostalnuh`. Правильный код будет выглядеть так:
```python
n = int(input())
k = int(input())
a = 0
x = n
for i in range(k):
a += 1/x
x -= 1
sumaostalnuh = 0
q = n - k
b = 0
for j in range(n - k - 1):
b_new = a * (1/q) + (1/q) * b
sumaostalnuh += b
q -= 1
b = b_new
otvet = 1 - a - sumaostalnuh
print(otvet)
```
Теперь у вас не должно быть отрицательных значений.