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

โปรแกรมตรวจสอบเลขยกกำลังสองหลังจัดเรียงตัวเลขใหม่ใน Python


สมมติว่าเรามีจำนวนเต็มบวก N เราจัดเรียงตัวเลขในลำดับใดก็ได้ (รวมถึงลำดับเดิม) ให้ตัวเลขนำหน้าไม่เป็นศูนย์ เราต้องตรวจสอบว่าสามารถทำได้หรือไม่ เพื่อให้ตัวเลขที่ได้เป็นกำลังของสอง

เช่น ถ้าอินพุตคือ N = 812 ผลลัพธ์จะเป็น True

วิธีแก้ปัญหา

  • i := 1
  • while i <= 1000000000:
    • s := i เป็นสตริง
    • s := เรียงตัวอักษรของ s
    • t := n เป็นสตริง
    • t := เรียงตัวอักษรของ t
    • ถ้า s เท่ากับ t: return True
    • i := i * 2
  • return False

ตัวอย่าง

def solve(n):
    i = 1
    while i <= 1000000000:
        s = str(i)
        s = ''.join(sorted(s))
        t = str(n)
        t = ''.join(sorted(t))
        if s == t:
            return True
        i = i * 2
    return False

N = 812
print(solve(N))

อินพุต

812

เอาต์พุต

True