zhukov000

ТИ

Oct 12th, 2021
1,028
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.66 KB | None | 0 0
  1. from functools import lru_cache
  2. W = 57 # сумма для победы
  3.  
  4. @lru_cache(None)
  5. def F(a, b):
  6.   # можно ли выигрыть одним ходом
  7.   if a * 2 + b >= W or a + b * 2 >= W:
  8.     return 1 # выигрыш одним ходом - база рекурсии
  9.  
  10.   lst = [ F(a + 1, b), F(a, b * 2), F(a * 2, b), F(a, b + 1) ]
  11.   if min(lst) > 0:
  12.     return -max(lst) # проигрываем - выбираем максимальное
  13.   # иначе выигрываем - наибольшее отрицательное
  14.   return 1 - max([x for x in lst if x < 0])
  15.  
  16. for s in range(1, 52):
  17.   if F(5, s) == -2:
  18.     print(s, 'Ваня 2')
  19.  
Advertisement
Add Comment
Please, Sign In to add comment