[THHV 2016 - CHVT - 11] Bài 3: Số chứng minh nhân dân

Xem dạng PDF

Gửi bài giải

Điểm: 20,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Người đăng:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Mọi công dân trong một quốc gia có số chứng minh thư riêng của mình bao gồm 19 chữ số theo dạng sau: ~DDMMYYYYAAAAAAAAAAC~. Chữ số ~DD~ biểu thị ngày sinh, ~MM~ tháng sinh, và ~YYYY~ năm sinh. Năm sinh là một số nguyên dương thuộc phạm vi ~[0001, 9999]~. Năm là nhuận nếu nó chia hết cho 4 và không chia hết cho 100 hoặc là năm chia hết cho 400. Chữ số ký hiệu ~A~ là tùy ý, và ~C~ là chữ số điều khiển được tính bằng thuật toán sau đây:

  1. Ta biểu diễn tất cả các chữ số trong mã số, ngoại trừ chữ số cuối cùng là ~Z_1 \dots Z_{18}~.
  2. ~S = (10 \times Z_1 + 9 \times Z_2 + 8 \times Z_3 + \dots + 2 \times Z_9 + 10 \times Z_{10} + 9 \times Z_{11} + 8 \times Z_{12} + \dots + 2 \times Z_{18}) \pmod{19}~.
  3. Nếu ~S \le 9~ thì ~C = S~, ngược lại ~C = 19 - S~.

Một vài chữ số đã bị xoá hoàn toàn từ một số chứng minh thư và được thay thế bằng ký tự 'X'.

Yêu cầu: Viết một chương trình tính toán số các số chứng minh thư khác nhau tương ứng với số chứng minh thư đã cho.

Input

  • Gồm một dòng ghi dãy số 19 ký tự chỉ gồm các chữ số và chữ 'X' biểu thị vị trí bị xóa chữ số.

Output

  • Ghi ra số lượng các số chứng minh thư khác nhau tương ứng với số chứng minh thư đã cho. Dữ liệu đảm bảo kết quả tính toán thuộc phạm vi số nguyên 64 bit.

Sample Input 1

XX0220051234567890X

Sample Output 1

28

Sample Input 2

XXXX200577XXXXXXX7X

Sample Output 2

3650000000

Sample Input 3

0XX52X0512X456X8903

Sample Output 3

946


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.