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

คำนำหน้าไบนารีหารด้วย 5 ใน Python


สมมติว่าเรามีอาร์เรย์ A เป็น 0 และ 1 วินาที ให้พิจารณาว่า N[i] เป็นอาร์เรย์ย่อยที่ i จากดัชนี A[0] ถึง A[i] ที่ตีความว่าเป็นเลขฐานสอง เราต้องหารายการคำตอบแบบบูลีน โดยที่ answer[i] เป็นจริงก็ต่อเมื่อ N[i] หารด้วย 5 ลงตัวเท่านั้น

ดังนั้น หากอินพุตเป็น [0,1,1,1,1,1,1] ผลลัพธ์จะเป็น [true,false,false,false,true,false]

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

  • ความยาว :=ขนาด A
  • ans:=สร้างอาร์เรย์ของความยาวขนาด และเติมเท็จ
  • number:=ค่าไบนารีโดยเชื่อมแต่ละองค์ประกอบจาก A
  • สำหรับฉันในช่วง 0 ถึงความยาว ทำ
    • ถ้า mod 5 เท่ากับ 0 แล้ว
      • ans[length-i-1] :=จริง
    • หมายเลข:=หมายเลข / 2
  • คืนสินค้า

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

ตัวอย่าง

class Solution:
   def prefixesDivBy5(self, A):
      length=len(A)
      ans=[False]*length
      number=int("".join(map(str,A)),2)
      for i in range(length):
         if number%5==0:
            ans[length-i-1]=True
            number=number>>1
      return ans
ob = Solution()
print(ob.prefixesDivBy5([0,1,1,1,1,1]))

อินพุต

[0,1,1,1,1,1]

ผลลัพธ์

[True, False, False, False, True, False]