สมมติว่าเรามีจำนวนเต็มบวก 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