Автор: | Н. В. Кленина, А. Жуплев | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 64 Мб | |
Выходной файл: | output.txt | |||
Максимальный балл: | 50 |
Известно, что основанием позиционной системы счисления называют количество различных символов, используемых для записи чисел в данной системе счисления. Также известно, что любое число x в b-ичной системе счисления имеет следующий вид: x = a0 * b0 + a1 * b1 + ... + an * bn, где b ≥ 2 и 0 ≤ ai < b
Для записи чисел в b-ичной системе счисления, где b ≤ 36, могут быть использованы первые b символов из следующего списка: 0, 1, …, 9, A, B, …, Z. Например для записи чисел в троичной системе счисления используются символы 0, 1, 2, а в двенадцатиричной — 0, 1, …, 9, A, B
Требуется написать программу которая по входной строке S определит, является ли данная строка записью числа в системе счисления, с основанием не большим 36, и, если является, определит минимальное основание этой системы счисления.
Во входном файле содержится строка S.
В выходном файле должно содержаться единственное число:
Длина строки S не превосходит 255 символов
Коды символов во входном файле лежат в диапазоне от 32 до 127 включительно
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Если в исходной строке присутствует хотя бы один символ не из списка списка: 0, 1, …, 9, A, B, …, Z, то это значит, что строка не является записью числа. Ответ — − 1.
Чтобы определить минимальное основание системы счисления, нужно найти максимальное значение среди всех разрядов и прибавить единицу. Это и будет ответ. Например в числе FF00FF этим максимумом будет F = 15, а минимальное основание — 15 + 1 = 16.
Однако заметим, что позиционной системы счисления с основанием 1 нет, поэтому, если исходное число состоит из всех нулей, то ответ — 2.