Том собирается реализовать новый язык программирования своего изобретения. Но прежде чем приступить к работе над ним, он хочет знать, должен ли его язык быть чувствительным к регистру или нет.
С одной стороны, нечувствительность к регистру кажется ему легче реализовать, но он беспокоится, что это может привести к отсутствию возможностей комбинаций символов, образующих переменную, что означает, что затем следует использовать более длинные имена переменных, чтобы избежать столкновений имен пример, вы можете использовать Hello, HEllo, heLLoи куча других возможностей , если язык является чувствительным к регистру, но только HELLOесли нет).
Но Том - дотошный человек, поэтому ему не достаточно просто беспокойства. Он хочет знать цифры.
Соревнование
Напишите функцию (или полную программу, если ваш язык их не поддерживает), которая, учитывая целое число nв качестве входных данных, выводит (или возвращает) разницу в количестве возможных перестановок для строки длины nс учетом регистра и без учета регистра.
На языке Тома имена переменных могут включать все буквы алфавита, подчеркивания и, начиная со второго символа, цифры.
Testcases
Input (length of the variable) -> Output (difference between the possibilities with case sensitivity and the possibilities with case insensitivity)
0 -> 0
1 -> 26
2 -> 2340
5 -> 784304586
8 -> 206202813193260
9 -> 13057419408922746
Неконкурентная эталонная реализация C ++
void diff(int n) {
long long total[2] = {0, 0}; //array holding the result for case insensivity ([0]) and case sensitivity ([1])
for (int c = 1; c <= 2; c ++) //1 = insensitivity, 2 = sensitivity
for (int l = 1; l <= n; l ++) //each character of the name
if (l == 1)
total[c - 1] = 26 * c + 1; //first character can't be a number
else
total[c - 1] *= 26 * c + 1 + 10; //starting from the second character, characters can include numbers
std::cout << total[1] - total[0] << std::endl;
}
счет
Том любит гольф, поэтому выигрывает самая короткая программа в байтах.
Заметка
Ничего страшного, если, возможно, последние два тестовых примера неправильны из-за точности чисел. В конце концов, я даже не уверен, что мой код правильно обработал номер 9.
