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

โปรแกรมค้นหาการรัน 1 วินาทีที่ยาวที่สุดติดต่อกันในรูปแบบไบนารีของ n ใน Python


สมมติว่าเรามีค่าไม่เป็นลบ n เราต้องหาความยาวของ 1s ที่ต่อเนื่องกันยาวนานที่สุดในการแทนค่าไบนารี

ดังนั้น หากอินพุตมีค่าเท่ากับ n =1469 ผลลัพธ์จะเป็น 4 เนื่องจากการแทนค่าไบนารีของ 156 คือ "10110111101" ดังนั้นจึงมี 1 วินาทีติดต่อกัน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • นับ :=0
  • ในขณะที่ n ไม่เหมือนกับ 0, do
    • n :=n AND (n หลังจากเลื่อนไปทางซ้ายหนึ่งบิต)
    • นับ :=นับ + 1
  • จำนวนคืนสินค้า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(n):
   count = 0
   while n != 0:
      n = n & (n << 1)
      count = count + 1

   return count

n = 1469
print(solve(n))

อินพุต

1469

ผลลัพธ์

4