Задача
Международный номерной регистрационный знак легкового автомобиля состоит из $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 |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import java.math.*; import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) { Scanner sc = new Scanner(System.in); int b = sc.nextInt(); //букв в знаке int a = sc.nextInt(); //цифр в знаке BigInteger LETTERS = BigInteger.valueOf(26); //кол-во букв в алфавите BigInteger let = BigInteger.valueOf(1); for(int i = 0; i < b; i++){ let = let.multiply(LETTERS); //возведение 26 в степень b } System.out.print(let); // вывод результата for(int i = 0; i < a; i++){ System.out.print(0); //добавление к результату а нулей } } } |
Решение
Начнем с того, что к условию задачи прилагается картинка, на которой видно, что во всех номерных знаках буквы и цифры не перемешаны между собой произвольно, а имеют свои четко распределенные места, в примере это последовательность, в которой на первой позиции стоит буква, далее три цифры и на последних двух позициях снова буквы. Это важный момент, поскольку если бы действительно было разрешено использовать любую последовательность, возможных комбинаций было бы гораздо больше. Поскольку в латинском алфавите $26$ букв, для выбора буквы на первое место существует $26$ возможных вариантов, на второе тоже $26$, как и на третье, четвертое и т. д. То есть для того чтобы найти все комбинации из букв для $B$ мест, нужно умножить $26$ на $26$ $B$ раз. Точно так же это работает с арабскими цифрами. Их всего $10$, соответственно, умножаем $10$ на $10$ $A$ раз, где $A$ — количество мест в номерном знаке для цифр. Поэтому, чтобы найти количество возможных комбинаций букв и цифр, перемножаем полученные результаты. Отсюда получаем формулу $26^B\cdot 10^A$.
Числа, возникающие при возведении в степень, слишком велики для типа long, поэтому в коде используется дополнительный тип для больших целочисленных значений из пакета java.math — BigInteger.
Следует также отметить, что домножение на $10^A$ осуществляется в последнем цикле приписыванием A нулей к полученному результату.