Pertimbangkan digit setiap basis integral di atas yang tercantum dalam urutan. Membagi mereka tepat menjadi dua berulang-ulang sampai setiap potongan digit memiliki panjang ganjil:
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
...
Sekarang, untuk setiap baris dalam tabel ini, baca potongan digit yang dibagi sebagai angka di dasar baris itu, dan jumlahkan. Berikan hasilnya di base 10 untuk kenyamanan.
Sebagai contoh...
- untuk base 3 hanya ada satu nomor untuk dijumlahkan: 012 3 = 12 3 = 5 10
- untuk base 4 ada 4 angka untuk dijumlahkan: 0 4 + 1 4 + 2 4 + 3 4 = 12 4 = 6 10
- base 6: 012 6 + 345 6 = 401 6 = 145 10
- base 11: 0123456789A 11 = 2853116705 10
Tantangan
Tulis program yang menggunakan bilangan bulat lebih besar dari satu sebagai basis dan melakukan prosedur pembagian jumlah ini, mengeluarkan jumlah akhir dalam basis 10 . (Jadi jika input adalah 3output 5, jika input adalah 6output 145, dll.)
Entah menulis fungsi yang mengambil dan mengembalikan integer (atau string karena jumlahnya bisa cukup besar) atau menggunakan stdin / stdout untuk memasukkan dan menampilkan nilai.
Kode terpendek dalam byte menang.
Catatan
- Anda dapat menggunakan fungsi konversi basis bawaan atau yang diimpor.
- Tidak ada batas atas nilai input (selain masuk akal
Int.Max). Nilai input tidak berhenti di 36 hanya karena "Z" berhenti di sana .
.
.
.