Xem xét các chữ số của bất kỳ cơ sở tích phân nào trên một, được liệt kê theo thứ tự. Chia chúng chính xác thành một nửa liên tục cho đến khi mỗi đoạn chữ số có độ dài lẻ:
Base Digits Subdivided Digit Chunks
2 01 0 1
3 012 012
4 0123 0 1 2 3
5 01234 01234
6 012345 012 345
7 0123456 0123456
8 01234567 0 1 2 3 4 5 6 7
9 012345678 012345678
10 0123456789 01234 56789
11 0123456789A 0123456789A
12 0123456789AB 012 345 678 9AB
...
16 0123456789ABCDEF 0 1 2 3 4 5 6 7 8 9 A B C D E F
...
Bây giờ, đối với bất kỳ hàng nào trong bảng này, hãy đọc các khối chữ số được chia nhỏ dưới dạng số trong cơ sở của hàng đó và tính tổng chúng. Đưa ra kết quả trong cơ sở 10 cho thuận tiện.
Ví dụ...
- đối với cơ sở 3 chỉ có một số để tổng hợp: 012 3 = 12 3 = 5 10
- đối với cơ sở 4 có 4 số cần tổng: 0 4 + 1 4 + 2 4 + 3 4 = 12 4 = 6 10
- cơ sở 6: 012 6 + 345 6 = 401 6 = 145 10
- cơ sở 11: 0123456789A 11 = 2853116705 10
Thử thách
Viết chương trình lấy số nguyên lớn hơn một số làm cơ sở và thực hiện thủ tục tổng chia nhỏ này, xuất ra tổng cuối cùng trong cơ sở 10 . (Vì vậy, nếu đầu vào là 3
đầu ra 5
, nếu đầu vào là 6
đầu ra 145
, v.v.)
Viết hàm lấy và trả về một số nguyên (hoặc chuỗi vì các số có thể trở nên khá lớn) hoặc sử dụng stdin / stdout để nhập và xuất các giá trị.
Mã ngắn nhất tính bằng byte thắng.
Ghi chú
- Bạn có thể sử dụng bất kỳ chức năng chuyển đổi cơ sở tích hợp hoặc nhập khẩu.
- Không có giới hạn trên cho giá trị đầu vào (bên cạnh mức hợp lý
Int.Max
). Các giá trị đầu vào không dừng ở 36 chỉ vì "Z" dừng ở đó .