สมมติว่าเรามีจำนวนเต็มบวก N เราจะเรียงลำดับตัวเลขใหม่ตามลำดับใดๆ (รวมถึงลำดับเดิม) โดยที่หลักนำหน้าจะไม่เป็นศูนย์ เราต้องตรวจสอบว่าเราทำได้ในลักษณะที่ผลลัพธ์เป็นเลขยกกำลัง 2
ดังนั้นหากอินพุตเป็น N =812 เอาต์พุตจะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
ผม:=1
-
ในขณะที่ i<=1000000000 ทำ
-
s:=ฉันเป็นสตริง
-
s:=จัดเรียงอักขระของ s
-
t:=n เป็นสตริง
-
t:=จัดเรียงอักขระของ t
-
ถ้า s เหมือนกับ t แล้ว
-
คืนค่า True
-
-
i:=i*2
-
-
คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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