Advertisement
jbn6972

Untitled

Aug 14th, 2022
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.00 KB | None | 0 0
  1. #Code Written by : John Nixon
  2. #Date: 06:08:2022  Time: 14:20:19
  3. #Copyrights are applicable
  4. import sys
  5. import os
  6. sys.setrecursionlimit(10000)
  7. try:
  8.     sys.stdin = open('./input.txt', 'r')
  9.     sys.stdout = open('./output.txt', 'w')
  10. except:
  11.     pass
  12.  
  13. # 1
  14. # 11
  15. # 78 97 23 6 51 52 28 60 33 1
  16.  
  17. bits = {}
  18. bits[0] = 0
  19. bits[1] = 1
  20. bits[2] = 1
  21. def count_set_bits(n):
  22.     if n in bits:
  23.         return bits[n]
  24.     # base case
  25.     if (n == 0):
  26.         return 0
  27.     else:
  28.         bits[n] = 1 + count_set_bits(n & (n - 1))
  29.         return bits[n]            
  30.  
  31. def Z_seq(P,Q,N):
  32.     numbers = [2]
  33.  
  34.     for i in range(1,N):
  35.         Z = P * count_set_bits(numbers[-1]) + Q
  36.         if Z in numbers:
  37.             idx = numbers.index(Z)
  38.             break
  39.         else:
  40.             numbers.append(Z)
  41.    
  42.     val = N  % len(numbers) - i
  43.     return count_set_bits(numbers[val])
  44.    
  45. T = int(input())
  46.  
  47. for _ in range(T):
  48.     P,Q,N = map(int,input().split())
  49.  
  50.     out_ = Z_seq(P,Q,N)
  51.     print(out_)
  52.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement