Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหา Bit ที่ K ใน Binary String ลำดับ N ด้วย Python

Binary string S_n: S_1="0", S_i = S_{i-1} + "1" + reverse(invert(S_{i-1})) หา bit ที่ k ใน S_n โดยไม่สร้าง string ทั้งหมด ใช้การสร้าง array คู่ arr (S_i) และ arr2 (invert) ขยายจนความยาว >= k แล้วคืน arr[k-1]

ขั้นตอนการทำงาน

  1. ถ้า k == 1: คืน '0'
  2. arr = [0], arr2 = [1]
  3. while k > len(arr): templast=arr.copy(), temp2last=arr2.copy()
  4. arr = templast + [1] + temp2last
  5. arr2 = templast + [0] + temp2last
  6. คืน str(arr[k-1])

ตัวอย่างโค้ด


def solve(n, k):
    if k == 1:
        return str(0)
    arr = [0]
    arr2 = [1]
    while k > len(arr):
        templast = arr.copy()
        temp2last = arr2.copy()
        arr = templast + [1] + temp2last
        arr2 = templast + [0] + temp2last
    return str(arr[k-1])

n = 4
k = 10
print(solve(n, k))  # Output: 1

อินพุต/เอาต์พุต

Input: n=4, k=10
Output: 1

S_4 = "011100110110001", bit ที่ 10 คือ 1