Tom akan menerapkan bahasa pemrograman baru dari penemuannya. Tetapi sebelum benar-benar mulai mengerjakannya, ia ingin tahu apakah bahasanya harus peka terhadap huruf besar atau kecil.
Di satu sisi, ketidaksensitifan kasus tampaknya lebih mudah diterapkan kepadanya, tetapi ia khawatir hal itu dapat menyebabkan kurangnya kemungkinan kombinasi karakter yang membentuk suatu variabel, yang berarti bahwa nama variabel yang lebih panjang harus digunakan untuk menghindari bentrokan penamaan (untuk contoh, Anda dapat menggunakan Hello
, HEllo
, heLLo
dan sekelompok kemungkinan lain jika bahasa adalah kasus sensitif, tetapi hanya HELLO
jika tidak).
Tetapi Tom adalah orang yang sangat teliti, jadi khawatir saja tidak cukup baginya. Dia ingin tahu angkanya.
Tantangan
Tulis fungsi (atau program lengkap jika bahasa Anda tidak mendukungnya) yang, diberikan bilangan bulat n
sebagai input, menghasilkan (atau mengembalikan) perbedaan dalam jumlah permutasi yang mungkin untuk string panjang n
dengan sensitivitas case dan tanpa.
Dalam bahasa Tom, nama variabel dapat mencakup semua huruf alfabet, garis bawah dan, mulai dari karakter kedua, digit.
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
Implementasi referensi C ++ yang tidak bersaing
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;
}
Mencetak gol
Tom suka golf, jadi program terpendek dalam byte menang.
Catatan
Tidak apa-apa jika mungkin dua testcases terakhir tidak tepat karena ketepatan angka. Lagi pula, saya bahkan tidak yakin kode saya menangani nomor 9 dengan benar.