Tom implementará un nuevo lenguaje de programación de su invención. Pero antes de comenzar a trabajar en él, quiere saber si su lenguaje debe ser sensible a mayúsculas o no.
Por un lado, la insensibilidad a mayúsculas y minúsculas parece más fácil de implementar para él, pero le preocupa que pueda causar una falta en las posibilidades de combinaciones de caracteres que forman una variable, lo que significa que los nombres de variables más largos deberían usarse para evitar conflictos de nombres (para Por ejemplo, se puede utilizar Hello
, HEllo
, heLLo
y un montón de otras posibilidades si el idioma es entre mayúsculas y minúsculas, pero sóloHELLO
si no).
Pero Tom es una persona meticulosa, por lo que una preocupación no es suficiente para él. Él quiere saber los números.
El reto
Escriba una función (o un programa completo si su idioma no los admite) que, dado un entero n
como entrada, genera (o devuelve) la diferencia en el número de permutaciones posibles para una cadena de longitudn
con mayúsculas y minúsculas.
En el lenguaje de Tom, los nombres de las variables pueden incluir todas las letras del alfabeto, guiones bajos y, a partir del segundo carácter, dígitos.
Casos de prueba
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
Implementación de referencia de C ++ no competitiva
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;
}
Puntuación
A Tom le gusta el golf, por lo que gana el programa más corto en bytes.
Nota
Está bien si tal vez las dos últimas pruebas no son correctas debido a la precisión numérica. Después de todo, ni siquiera estoy seguro de que mi código haya manejado el número 9 correctamente.