Từ tập các bài có trên SPOJ (oi)
6319. Mã số thuế
Mã bài: TAXID
|
Mã số thuế
Ðể thực hiện luật Thuế thu nhập cá nhân, Tổng cục thuế phải cấp cho mỗi người có thu nhập một mã số thuế sao cho không có hai người nào có mã số thuế trùng nhau. Tổng cục thuế quyết ðịnh chọn mã số thuế từ tập S bao gồm các biểu diễn trong hệ ðếm cơ số 36 của tất cả các số nguyên dương trong phạm vi từ 1 ðến n (36 ≤ n ≤ 1016). Ðể biểu diễn các chữ số trong hệ ðếm cơ số 36, Tổng cục thế sử dụng các kí tự từ 0 ðến 9 và 26 chữ cái latinh từ a ðến z theo quy tắc chỉ ra trong bảng 1. Một số trong hệ ðếm cơ số 36 có thể hiểu là số biểu diễn trong hệ ðếm cơ số q (2 ≤ q ≤ 36) nếu nó chỉ chứa các các chữ số trong q chữ số ðầu tiên trong hệ ðếm cơ số 36.

Có tất cả m Cục thuế ðược ðánh số từ 1 ðến m làm nhiệm vụ duyệt hồ sơ và cấp mã số thuế (3 ≤ m ≤ 70).
Ðể việc cấp mã số thuế có thể ðược tiến hành song song ở tất cả các Cục thuế, trước hết Tổng cục thuế chọn dãy số nguyên c1, c2, ..., ck thỏa mãn 1 < c1 < c2 < ... < ck < 36, trong ðó k = [(m-1)/2] (kí hiệu [α] là số nguyên lớn nhất bé hơn hoặc bằng α) và sau ðó tiến hành phân phối mã số thuế cho các Cục thuế như sau: ðầu tiên, từ tập S lọc ra tất cả các số có thể hiểu như là số trong hệ ðếm cơ số c1, chuyển cho các Cục thuế thứ nhất và thứ hai sử dụng, sau ðó loại bỏ tất cả các số này khỏi tập S; tiếp ðến, lọc ra tất cả các số còn lại trong S có thể hiểu như số ðếm ở hệ ðếm cơ số c2 chuyển cho các Cục thuế thứ 3 và thứ 4 sử dụng, sau ðó loại bỏ tất cả các số này khỏi tập S; ... Cục thuế cuối cùng (nếu m lẻ) hoặc 2 Cục thuế cuối cùng (nếu m chẵn) ðược sử dụng các mã còn lại trong tập S.
Tại các Cục thuế, mã số thuế ðược cấp theo quy tắc sau: các Cục thuế với số hiệu lẻ cấp mã số thuế theo tứ tự từ nhỏ ðến lớn, còn các Cục thuế với số hiệu chẵn cấp mã số thuế theo thứ tự từ lớn ðến nhỏ trong tập các mã số ðược phân phối.
Ví dụ, với n = 50, m = 3 và c1 = 16. Ta có tập mã số thuế ban ðầu S = {1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c, 1d, 1e}. Khí ðó các Cục thuế 1 và 2 ðược sử dụng các mã trong tập {1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c, 1d, 1e}; Cục thuế 3 ðược sử dụng các mã {g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}. Người thứ nhất ðến Cục thuế 2 ðược cấp mã số thuế 1e, người thứ hai ðến Cục thuế này ðược cấp mã số thuế 1d, ...
Yêu cầu
Cho ở dạng hệ ðếm cơ số 10 các số nguyên dương n, m, c1, c2, ..., ck, p và q. Hãy xác ðịnh mã số thuế của người thứ q ở Cục thuế p.
Dữ liệu
- Dòng thứ nhất chứa các số nguyên n, m, p, q.
- Dòng thứ hai chứ k số nguyên c1, c2, ..., ck (k = [(m-1)/2]).
Các số trên một dòng ðược ghi cách nhau một dấu cách. Dữ liệu ðảm bảo tồn tại mã số thuế.
Kết quả
Ðưa ra mã số thuế tìm ðược.
Ví dụ
Input:
30 5 2 2
16
Output:
1d
Ràng buộc
60% số tests ứng với 60% số ðiểm của bài có 36 ≤ n ≤ 10000.
| Được gửi lên bởi: | Lê Ðôn Khuê |
| Ngày: | 2010-03-11 |
| Thời gian chạy: | 1s
|
| Giới hạn mã nguồn: | 50000B |
| Ngôn ngữ cho phép: | Tất cả ngoại trừ: AWK CLOJ ERL F# GO PERL 6 PYTH 3.1.2 SCALA SED TCL |
| Nguồn bài: | VOI 2010 |