Advertisement
filashkov

Untitled

Mar 9th, 2020
239
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.02 KB | None | 0 0
  1. def c(n, k):
  2.     if (n < k):
  3.         return 0
  4.     return a[n * (n + 1) // 2 + k]
  5.  
  6. n = 32
  7.  
  8. a = []
  9. a.append(1)
  10.  
  11. for i in range(n):
  12.     a.append(1)
  13.     for j in range(i):
  14.         a.append(a[i * (i + 1) // 2 + j] + a[i * (i + 1) // 2 + j + 1])
  15.     a.append(1)
  16.  
  17. #print(a)
  18.  
  19. number = []
  20.  
  21. N, k = map(int, input().split())
  22.  
  23. for i in range(32):
  24.     number.append((N // (2 ** (31 - i))) % 2)
  25.  
  26. print(number)
  27.  
  28. answer = 0
  29. i = 0
  30. while True:
  31.     if (number[i] == 0):
  32.         i += 1
  33.     else:
  34.         break
  35.  
  36. length = 32 - i
  37. n = length - 2
  38.  
  39. add = 0
  40. mul = n - k + 1
  41.  
  42. for i in range(1, mul + 1):
  43.     add += i * c(n, k)
  44.     n -= 1
  45.  
  46. print(add)
  47.  
  48. answer += add
  49. print(answer)
  50.  
  51. i = 0
  52. while True:
  53.     if (number[i] == 0):
  54.         i += 1
  55.     else:
  56.         break
  57.  
  58. i += 1
  59. for j in range(i, 32):
  60.     if (number[j] == 0):
  61.         k -= 1
  62.         if (k == 0):
  63.             answer += 1
  64.             break
  65.     else:
  66.         answer += c(32 - j - 1, k - 1)
  67.         answer += c(32 - j, k - 1)
  68.        
  69. print(answer)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement