ทอมกำลังใช้ภาษาโปรแกรมใหม่ของสิ่งประดิษฐ์ของเขา แต่ก่อนที่จะเริ่มทำงานจริงเขาต้องการทราบว่าภาษาของเขาควรตรงตามตัวพิมพ์ใหญ่ - เล็กหรือไม่
ในแง่หนึ่งกรณีของ insensitivity ดูเหมือนจะง่ายต่อการปรับใช้กับเขา แต่เขากังวลว่ามันอาจทำให้เกิดการขาดความเป็นไปได้ของการรวมกันของตัวละครที่เป็นตัวแปรซึ่งหมายความว่าควรใช้ชื่อตัวแปรที่ยาวขึ้นเพื่อหลีกเลี่ยงการตั้งชื่อ ตัวอย่างเช่นคุณสามารถใช้Hello
, HEllo
, heLLo
และพวงของความเป็นไปได้อื่น ๆ ถ้าภาษาที่เป็นกรณีที่สำคัญ แต่HELLO
หากไม่ได้)
แต่ทอมเป็นคนที่พิถีพิถันดังนั้นความกังวลก็ไม่เพียงพอสำหรับเขา เขาต้องการรู้ตัวเลข
ความท้าทาย
เขียนฟังก์ชั่น (หรือโปรแกรมเต็มรูปแบบหากภาษาของคุณไม่รองรับ) ที่กำหนดจำนวนเต็มn
เป็นอินพุตเอาต์พุต (หรือส่งคืน) ความแตกต่างของจำนวนพีชคณิตที่เป็นไปได้สำหรับสตริงที่n
มีความไวของตัวพิมพ์เล็กและตัวพิมพ์เล็ก
ในภาษาของทอมชื่อตัวแปรสามารถรวมตัวอักษรตัวอักษรขีดล่างและเริ่มจากตัวอักษรตัวที่สองตัวเลข
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
การใช้งานอ้างอิง 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;
}
เกณฑ์การให้คะแนน
ทอมชอบกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ
บันทึก
ไม่เป็นไรถ้าบางทีการทดสอบสองครั้งสุดท้ายนั้นไม่ถูกต้องเนื่องจากความแม่นยำเชิงตัวเลข ท้ายที่สุดฉันไม่แน่ใจว่ารหัสของฉันจะจัดการหมายเลข 9 อย่างถูกต้อง