Tom wird eine neue Programmiersprache seiner Erfindung implementieren. Bevor er jedoch anfängt, daran zu arbeiten, möchte er wissen, ob bei seiner Sprache die Groß- und Kleinschreibung beachtet werden muss oder nicht.
Einerseits scheint es ihm einfacher zu sein, die Unempfindlichkeit gegen Groß - und Kleinschreibung zu implementieren, aber er befürchtet, dass dadurch die Möglichkeiten zur Kombination von Zeichen, die eine Variable bilden, eingeschränkt werden könnten ein Beispiel, können Sie verwenden Hello
, HEllo
, heLLo
und ein paar andere Möglichkeiten , wenn die Sprache Groß- und Kleinschreibung, aber nur , HELLO
wenn nicht).
Aber Tom ist ein akribischer Mensch, deshalb reicht es ihm nicht, sich Sorgen zu machen. Er will die Zahlen wissen.
Die Herausforderung
Schreiben Sie eine Funktion (oder ein vollständiges Programm, wenn Ihre Sprache sie nicht unterstützt), die bei einer Ganzzahl n
als Eingabe den Unterschied in der Anzahl der möglichen Permutationen für eine Zeichenfolge n
mit und ohne Berücksichtigung der Groß- / Kleinschreibung ausgibt (oder zurückgibt) .
In Toms Sprache können Variablennamen alle Buchstaben, Unterstriche und ab dem zweiten Zeichen Ziffern enthalten.
Testfälle
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
Nicht konkurrierende C ++ - Referenzimplementierung
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;
}
Wertung
Tom mag Golf, also gewinnt das kürzeste Programm in Bytes.
Hinweis
Es ist in Ordnung, wenn die letzten beiden Testfälle aufgrund der numerischen Genauigkeit möglicherweise nicht richtig sind. Immerhin bin ich mir nicht sicher, ob mein Code Nummer 9 richtig gehandhabt hat.