Số học
Mô tả
Cận tết Trung Thu, kho bãi của siêu thị tiếp nhận một lô hộp bánh trung thu nhãn hiệu Kido. Mỗi hộp đều in một mã vạch chuẩn EAN-13 gồm đúng 13 chữ số để máy quét nhận diện. Trong đó, 12 chữ số đầu mang thông tin sản phẩm, còn chữ số cuối cùng là "mật mã" (checksum) giúp phát hiện lỗi quét hoặc in sai.
Đội kiểm soát chất lượng nhờ bạn viết chương trình tự động kiểm tra xem một mã vạch cho trước có hợp lệ theo quy tắc EAN-13 hay không. Quy tắc tính như sau:
- Lấy 12 chữ số đầu tiên (từ trái sang phải).
- Cộng dồn 12 chữ số này theo luật nhân xen kẽ: chữ số thứ 1 nhân 1, thứ 2 nhân 3, thứ 3 nhân 1, thứ 4 nhân 3, ... cứ thế luân phiên.
- Tìm chữ số kiểm tra: lấy phần bù của tổng trên đến bội số gần nhất của 10. Cụ thể, checksum = (10 - (tổng mod 10)) mod 10.
- Nếu checksum tính được trùng khớp với chữ số thứ 13 thì mã hợp lệ, ngược lại là mã lỗi.
Đầu vào
- Một chuỗi
sgồm đúng 13 ký tự, mỗi ký tự là chữ số từ '0' đến '9'.
Đầu ra
- Trả về
Truenếu mã vạch hợp lệ theo chuẩn EAN-13, ngược lại trả vềFalse.
Ràng buộc
sluôn có độ dài đúng 13.- Mọi ký tự trong
sđều là chữ số.
Ví dụ
Ví dụ 1:
- Đầu vào:
"4710142030017" - Giải thích: 12 chữ số đầu là 471014203001. Tính tổng: (4×1) + (7×3) + (1×1) + (0×3) + (1×1) + (4×3) + (2×1) + (0×3) + (3×1) + (0×3) + (0×1) + (1×3) = 4 + 21 + 1 + 0 + 1 + 12 + 2 + 0 + 3 + 0 + 0 + 3 = 47. Checksum = (10 - (47 mod 10)) mod 10 = (10 - 7) mod 10 = 3. Nhưng chữ số thứ 13 là 7, không khớp.
- Đầu ra:
False
Ví dụ 2:
- Đầu vào:
"4710142030013" - Giải thích: 12 chữ số đầu giống ví dụ 1, tổng = 47, checksum = 3. Chữ số thứ 13 đúng bằng 3, mã hợp lệ.
- Đầu ra:
True