Tom sẽ thực hiện một ngôn ngữ lập trình mới của phát minh của mình. Nhưng trước khi thực sự bắt đầu làm việc với nó, anh ta muốn biết liệu ngôn ngữ của mình có nên phân biệt chữ hoa chữ thường hay không.
Một mặt, trường hợp không nhạy cảm có vẻ dễ thực hiện hơn đối với anh ta, nhưng anh ta lo lắng rằng điều đó có thể gây ra sự thiếu khả năng kết hợp các ký tự tạo thành một biến, có nghĩa là nên sử dụng tên biến dài hơn để tránh xung đột đặt tên (cho Ví dụ, bạn có thể sử dụng Hello
, HEllo
, heLLo
và một loạt các khả năng khác nếu ngôn ngữ là trường hợp nhạy cảm, nhưng chỉ HELLO
nếu không muốn nói).
Nhưng Tom là một người tỉ mỉ, vì vậy chỉ cần một lo lắng là không đủ với anh ta. Anh ấy muốn biết những con số.
Các thách thức
Viết hàm (hoặc chương trình đầy đủ nếu ngôn ngữ của bạn không hỗ trợ chúng), với một số nguyên n
là đầu vào, đầu ra (hoặc trả về) sự khác biệt về số lượng hoán vị có thể có cho một chuỗi độ dài n
có độ nhạy trường hợp và không có.
Trong ngôn ngữ của Tom, tên biến có thể bao gồm tất cả các chữ cái trong bảng chữ cái, dấu gạch dưới và, bắt đầu từ ký tự thứ hai, chữ số.
Tủ thử
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
Triển khai tham chiếu C ++ không cạnh tranh
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;
}
Chấm điểm
Tom thích chơi gôn, vì vậy chương trình ngắn nhất tính bằng byte sẽ thắng.
Ghi chú
Không sao nếu có thể hai chiếc thử cuối cùng không đúng vì độ chính xác của số. Rốt cuộc, tôi thậm chí không chắc mã của mình đã xử lý số 9 một cách chính xác.