Advertisement
Guest User

Untitled

a guest
May 14th, 2013
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.66 KB | None | 0 0
  1.  
  2.  
  3. def f(n):
  4.   return 1 if n == 0 else n * f(n - 1)
  5.  
  6. def c(n, k):
  7.   return f(n) // f(k) // f(n - k)
  8.  
  9. def dp(n, o1, o2, same):
  10.   global zz
  11.   if n == 0:
  12.     return 1 if same >= 37 else 0
  13.   if (n, o1, o2, same) in zz:
  14.     return zz[(n, o1, o2, same)]
  15.   ret = 0
  16.   for i in range(2):
  17.     no1 = o1 - i
  18.     if no1 > n - 1 or no1 < 0:
  19.       continue
  20.     for j in range(2):
  21.       no2 = o2 - j
  22.       if no2 > n - 1 or no2 < 0:
  23.         continue
  24.       ret += dp(n - 1, no1, no2, same + (1 if i == j else 0))
  25.   zz[(n, o1, o2, same)] = ret
  26.   return ret
  27.  
  28. zz = {}
  29. ans = dp(52, 26, 26, 0)
  30. print(ans)
  31. allz = c(52, 26)**2
  32. print(allz)
  33. print(1. * ans / allz)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement