Untitled
unknown
plain_text
a year ago
892 B
6
Indexable
MOD = 10**9 + 7 def count_set_bits(x): return bin(x).count('1') def Decryptions(N, K): limit = int(N, 2) if K == 0: return 1 if limit >= 0 else 0 max_value = limit + 1 dp = [[0] * (K + 1) for _ in range(max_value)] dp[0][0] = 1 # Initialize starting condition for steps in range(K): for num in range(max_value): if dp[num][steps]: next_num = count_set_bits(num) if next_num < max_value: dp[next_num][steps + 1] += dp[num][steps] dp[next_num][steps + 1] %= MOD count = 0 for num in range(limit + 1): count += dp[num][K] count %= MOD return count # Get user inputs N = input("Enter a binary string: ") K = int(input("Enter the number of steps: ")) # Print the result print("Result:", Decryptions(N, K))
Editor is loading...
Leave a Comment