Tom, icadının yeni bir programlama dilini uygulayacak. Ama aslında üzerinde çalışmaya başlamadan önce, dilinin büyük / küçük harfe duyarlı olup olmayacağını bilmek istiyor.
Bir yandan, büyük / küçük harf duyarsızlığının uygulanması daha kolay görünüyor, ancak bir değişken oluşturan karakter kombinasyonlarının olasılıklarında bir eksikliğe neden olabileceğinden endişe ediyor, bu da çatışmaların isimlendirilmesinden kaçınmak için daha uzun değişken adlarının kullanılması gerektiği anlamına geliyor. bir örnek, kullanabilirsiniz Hello
, HEllo
, heLLo
dil harf duyarlı ise ancak ve diğer olasılıklarla bir demet HELLO
) değilse.
Ama Tom titiz bir insan, bu yüzden onun için sadece bir endişe yeterli değil. Sayıları bilmek istiyor.
Meydan okuma
n
Girdi olarak bir tamsayı verildiğinde n
, büyük / küçük harf duyarlılığı için ve büyük / küçük harf duyarlılığı için mümkün olan permütasyon sayısı farkını veren (veya döndüren) bir işlev (veya diliniz desteklemiyorsa tam bir program ) yazın .
Tom'un dilinde, değişken adları tüm alfabe harflerini, alt çizgileri ve ikinci karakterden başlayarak rakamları içerebilir.
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
Rakip olmayan C ++ referans uygulaması
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;
}
puanlama
Tom golfü sever, bu yüzden bayttaki en kısa program kazanır.
Not
Sayısal kesinlik nedeniyle belki de son iki test senaryosunun doğru olmaması sorun değil. Sonuçta, ben bile emin değilim benim kodu doğru numarayı 9 ele.