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] Chữ số kiểm tra Luhn cho mã xác thực

    Thuật toán Luhn được dùng rộng rãi để sinh và kiểm tra chữ số kiểm tra (check digit) nhằm phát hiện lỗi nhập liệu khi xác thực số thẻ ngân hàng, mã định danh, IMEI, ...

    Cho một chuỗi số gốc SSS (chưa có chữ số kiểm tra), cần tìm chữ số d∈{0,…,9}d \in \{0,\dots,9\}d∈{0,…,9} để khi thêm ddd vào cuối SSS (tạo thành S′=S∥dS' = S \| dS′=S∥d), chuỗi S′S'S′ thoả thuật toán Luhn:

    • Đánh số vị trí các chữ số của S′S'S′ từ phải sang trái, bắt đầu từ 1 (vị trí 1 chính là ddd).
    • Với mỗi chữ số ở vị trí chẵn (2, 4, 6, ...): nhân đôi giá trị; nếu kết quả ≥10\ge 10≥10 thì trừ đi 9.
    • Với mỗi chữ số ở vị trí lẻ (1, 3, 5, ...): giữ nguyên.
    • Tổng tất cả các giá trị (sau biến đổi) của S′S'S′ phải chia hết cho 10.

    Hãy in ra chuỗi S′=S∥dS' = S \| dS′=S∥d.

    Ví dụ: S=S = S= "7992739871" thì d=3d = 3d=3, kết quả in ra là "79927398713".

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

      Một dòng duy nhất chứa chuỗi số SSS (chỉ gồm các chữ số 0-9), độ dài từ 1 đến 1000 chữ số.

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

      Một dòng duy nhất: chuỗi SSS nối thêm đúng 1 chữ số kiểm tra Luhn ở cuối.

    Ví dụ:

    Đầu vào:

    0

    Đầu ra:

    00
    

    Đầu vào:

    7992739871

    Đầu ra:

    79927398713
    

    Đang tải editor...