Tom zamierza wdrożyć nowy język programowania swojego wynalazku. Ale zanim zacznie nad tym pracować, chce wiedzieć, czy w jego języku rozróżniana jest wielkość liter, czy nie.
Z jednej strony, rozpoznawanie wielkości liter wydaje się łatwiejsze do wdrożenia, ale martwi się, że może to spowodować brak możliwości kombinacji znaków tworzących zmienną, co oznacza, że należy unikać dłuższych nazw zmiennych, aby uniknąć kolizji nazw (dla przykład, można użyć Hello
, HEllo
, heLLo
i kilka innych możliwości, jeśli język jest wielkość liter, ale tylko HELLO
jeśli nie).
Ale Tom jest skrupulatną osobą, więc samo zmartwienie nie wystarczy. On chce poznać liczby.
Wyzwanie
Napisz funkcję (lub pełny program, jeśli Twój język ich nie obsługuje), która, biorąc pod uwagę liczbę całkowitą n
jako dane wejściowe, wyprowadza (lub zwraca) różnicę liczby możliwych kombinacji dla ciągu długości n
z rozróżnianiem wielkości liter i bez.
W języku Toma nazwy zmiennych mogą zawierać wszystkie litery alfabetu, znaki podkreślenia i, począwszy od drugiego znaku, cyfry.
Przypadki testowe
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
Niekonkurencyjna implementacja referencyjna 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;
}
Punktacja
Tom lubi golfa, więc wygrywa najkrótszy program w bajtach.
Uwaga
Jest w porządku, jeśli być może ostatnie dwa przypadki testowe są nieprawidłowe ze względu na dokładność liczbową. W końcu nie jestem nawet pewien, czy mój kod poprawnie obsługuje numer 9.