Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm nối các số nhị phân liên tiếp trong Python

Giả sử chúng ta có một số n, chúng ta phải tìm giá trị thập phân của chuỗi nhị phân bằng cách nối các biểu diễn nhị phân từ 1 đến n lần lượt theo thứ tự, nếu câu trả lời quá lớn thì trả về câu trả lời modulo 10 ^ 9 + 7.

Vì vậy, nếu đầu vào là n =4, thì đầu ra sẽ là 220 bởi vì, bằng cách kết hợp biểu diễn nhị phân từ 1 đến 4 sẽ là "1" + "10" + "11" + "100" =110111000, đây là nhị phân đại diện của 220.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=1
  • m:=10 ^ 9 + 7
  • đối với tôi trong phạm vi từ 2 đến n, thực hiện
    • ans:=shift ans (độ dài bit của i) số lần
    • ans:=(ans + i) mod m
  • trả lại ans

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

def solve(n):
   ans = 1
   m = (10**9+7)
   for i in range(2,n+1):
      ans = ans<<i.bit_length()
      ans = (ans+i) % m
   return ans

n = 4
print(solve(n))

Đầu vào

4

Đầu ra

220