# Вначале нужно найти сколько баллов можно набрать, если сдать все на минимум.
# Оставшиеся баллы можно расскидать между заданиями.
# Количество вариантов будет равно числу сочетаний с повторениями:
# (n + k - 1)! / k!(n - 1)!
def fact(n):
if n < 2:
return 1
return n * fact(n - 1)
def solve(tasks, total, minscore):
dif = total - tasks * minscore
if dif < 0:
raise Exception('its impossible')
return fact(dif + tasks - 1) // fact(dif) // fact(tasks - 1)
print(solve(2,5,2))
Created
June 26, 2018 13:28
-
-
Save KolosovAO/815680f9755c3a6aa60e9fa6f1791728 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment