Giả sử chúng ta có một số ở dạng bát phân hoặc dạng thập phân. Nếu nó ở dạng bát phân, hãy kiểm tra xem nó có phải là palindrome hay không. Nếu số ở dạng thập phân, hãy chuyển nó thành số bát phân rồi kiểm tra xem nó có phải là palindrome hay không.
Vì vậy, nếu đầu vào giống như num =178, thì đầu ra sẽ là True vì số không ở dạng bát phân (8 không phải là biểu tượng hợp lệ ở dạng bát phân nhưng hợp lệ ở dạng thập phân), sau đó chuyển đổi nó thành bát phân là 262 và đây là palindrome.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- base:=8 khi tất cả các chữ số của num nhỏ hơn 8, ngược lại là 10
- oct_list:=một danh sách mới
- trong khi num không phải là 0, hãy thực hiện
- insert (num mod base) vào cuối oct_list
- num:=thương số của (num / base)
- j:=kích thước của oct_list - 1
- k:=0
- while k <=j, do
- nếu oct_list [j] không giống với oct_list [k], thì
- trả về Sai
- j:=j - 1, k:=k + 1
- nếu oct_list [j] không giống với oct_list [k], thì
- trả về True
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def is_all_under_8(num): while num: if (num % 10) >= 8: return False else: num = int(num / 10) return True def solve(num): base = 8 if(is_all_under_8(num) == False) else 10 oct_list = [] while num != 0: oct_list.append(num % base) num = int(num / base) j = len(oct_list)-1 k = 0 while k <= j: if oct_list[j] != oct_list[k]: return False j-=1 k+=1 return True num = 178 print(solve(num))
Đầu vào
178
Đầu ra
True