Задача
Международный номерной регистрационный знак легкового автомобиля состоит из A арабских цифр и B больших букв латинского алфавита. Будем считать, что для обеспечения уникальности номера разрешено использовать любую последовательность букв и цифр.
Сколько существует различных таких номеров?
Входные данные
В единственной строке через пробел 2 неотрицательных целых числа B и A. Оба числа не превышают 26.
Выходные данные
Единственное число — ответ к задаче.
Тесты
№ | Входные данные | Выходные данные |
---|---|---|
1 | 3 3 | 17576000 |
2 | 2 5 | 67600000 |
3 | 7 1 | 80318101760 |
4 | 1 1 | 260 |
5 | 26 26 | 615611958020715731079667428840020377600000000000000000000000000 |
Код
Решение
Начнем с того, что к условию задачи прилагается картинка, на которой видно, что во всех номерных знаках буквы и цифры не перемешаны между собой произвольно, а имеют свои четко распределенные места, в примере это последовательность, в которой на первой позиции стоит буква, далее три цифры и на последних двух позициях снова буквы. Это важный момент, поскольку если бы действительно было разрешено использовать любую последовательность, возможных комбинаций было бы гораздо больше. Поскольку в латинском алфавите 26 букв, для выбора буквы на первое место существует 26 возможных вариантов, на второе тоже 26, как и на третье, четвертое и т. д. То есть для того чтобы найти все комбинации из букв для B мест, нужно умножить 26 на 26 B раз. Точно так же это работает с арабскими цифрами. Их всего 10, соответственно, умножаем 10 на 10 A раз, где A — количество мест в номерном знаке для цифр. Поэтому, чтобы найти количество возможных комбинаций букв и цифр, перемножаем полученные результаты. Отсюда получаем формулу 26B⋅10A.
Числа, возникающие при возведении в степень, слишком велики для типа long, поэтому в коде используется дополнительный тип для больших целочисленных значений из пакета java.math — BigInteger.
Следует также отметить, что домножение на 10A осуществляется в последнем цикле приписыванием A нулей к полученному результату.