Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [An toàn thông tin] Chuyển số nguyên sang Base58

    Base58 là bảng mã hoá cơ số 58 được thiết kế để tránh nhầm lẫn khi con người đọc/gõ tay (loại bỏ các ký tự dễ gây nhầm như 0, O, I, l); đây là bảng chữ được dùng để biểu diễn địa chỉ ví Bitcoin và nhiều định danh mật mã khác.

    Bảng chữ Base58 chuẩn (đủ 58 ký tự, theo đúng thứ tự) là:

    123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
    

    Cho một số nguyên không âm nnn ở dạng thập phân (có thể rất lớn, tới 100 chữ số, không có số 0 thừa ở đầu trừ khi chính n=0n = 0n=0). Hãy biểu diễn nnn trong hệ cơ số 58 dùng bảng chữ trên: liên tục lấy n mod 58n \bmod 58nmod58 làm chữ số ít quan trọng nhất, sau đó n←⌊n/58⌋n \leftarrow \lfloor n / 58 \rfloorn←⌊n/58⌋, lặp lại cho tới khi n=0n = 0n=0; chữ số có trọng số lớn nhất in ra trước. Riêng nếu n=0n = 0n=0 ngay từ đầu, in ra đúng ký tự đầu tiên của bảng chữ (1).

    Ví dụ: với n=58n = 58n=58, ta có 58=1×58+058 = 1 \times 58 + 058=1×58+0, hai chữ số (từ lớn đến nhỏ) là chữ số ứng với giá trị 111 và giá trị 000, tra bảng được 2 và 1, kết quả in ra là 21.

    • Định dạng đầu vào:

      Một dòng duy nhất chứa số nguyên không âm nnn (dạng thập phân, tối đa 100 chữ số).

    • Định dạng đầu ra:

      Một dòng chứa chuỗi Base58 biểu diễn nnn theo bảng chữ trên.

    Ví dụ:

    Đầu vào:

    0

    Đầu ra:

    1
    

    Đầu vào:

    1

    Đầu ra:

    2
    

    Đang tải editor...