o0Shjn0o
Junior Member
Theo như cách tính này thì 703 phải là aaa chứ nhỉ?Mấy bác cho em hỏi, làm sao để xử lý chuyển số thành chuỗi theo như logic:
1-26:a-z
27:aa và đến zz là 703, 704 lại quay lại aaa.
Tks các bác!
Phân tích một chút: theo đề bài 1 - 26 map với a - z và từ 27-52 sẽ map với aa - az (nếu mình đang hiểu sai chỗ này thì coi như phần dưới cũng sai nha )
==> Vậy là 26 sẽ lấy làm mốc để tính toán.
Giả sử lấy 27 để tính toán đi, 27 chia cho 26 được 1 dư 1, => số dư 1 sẽ map với a, số kết quả chia ko tính phần dư 1 map với a => được aa
Tiếp theo lấy 28, 28 chia cho 26 được 1 dư 2 => số dư 2 sẽ là b, số kết quả chia ko tính phần dư 1 sẽ map với a => được ab
Lấy 52, 52 chia cho 26 được 2 dư 0 => số dư 0 sẽ map với z, số kết quả chia ko tính phần dư là 2 đáng ra sẽ map với b nhưng vì theo đề bài ra nó phải map với a. Vậy suy ra số này đặc biệt, cũng như tất cả các bội số của 26, trước khi map phải trừ đi 1.
=> ta có 1 tương ứng với a, 2 với b, 3 với c,.... 0 với z, default: '' (1)
pseudo code:
fn check(n: int):
if n <=0: return ''
mod_26 = n % 26
divide_by_26 = n // 26
result = map_to_character(mode_26) từ map (1) bên trên
if divide_by_26 == 0 and mod_26 == 0: pass
elif divide_by_26 > 0 and mod_26 == 0: result += check(divide_by_26-1)
else: result += check(divide_by_26)
return result.reverse()
Last edited: