สมมติว่าเรามีค่า n เราต้องพิมพ์ Decimal, Octal, Hexadecimal และ Binary ที่เทียบเท่ากันของตัวเลข n ตัวแรก (1 ถึง n) ในสี่คอลัมน์ที่แตกต่างกัน ดังที่เราทราบ เราสามารถแสดงตัวเลขด้วยอักขระนำหน้า d, o, X และ b สำหรับทศนิยม ฐานแปด เลขฐานสิบหก และทศนิยมตามลำดับ
ดังนั้นหากอินพุตเท่ากับ n =10 เอาต์พุตจะเป็น
1 1 1 1 2 2 2 10 3 3 3 11 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111 8 10 8 1000 9 11 9 1001 10 12 A 1010
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- l :=(ความยาวของเลขฐานสองเท่ากับ n) - 2
- สำหรับฉันในช่วง 1 ถึง n ทำ
- f :=สตริงว่าง
- สำหรับแต่ละอักขระ c ใน "doXb" ให้ทำ
- ถ้า f ไม่ว่างก็
- f :=f เชื่อมช่องว่างหนึ่งช่อง
- f :=f + จัดชิดขวาสตริงการจัดรูปแบบโดยแปลง l เป็นสตริงแล้วต่อ c
- ถ้า f ไม่ว่างก็
- ส่ง i สี่ครั้งไปยังสตริงที่จัดรูปแบบ f แล้วพิมพ์บรรทัด
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
def solve(n): l = len(bin(n)) - 2 for i in range(1, n + 1): f = "" for c in "doXb": if f: f += " " f += "{:>" + str(l) + c + "}" print(f.format(i, i, i, i)) n = 10 solve(n)
อินพุต
10
ผลลัพธ์
1 1 1 1 2 2 2 10 3 3 3 11 4 4 4 100 5 5 5 101 6 6 6 110 7 7 7 111 8 10 8 1000 9 11 9 1001 10 12 A 1010