ตำนานของอินเดียเล่าเรื่องราวของนักประดิษฐ์ที่ถูกกล่าวหาในเกมหมากรุกซึ่งสร้างความประทับใจให้จักรพรรดิแห่งอินเดียด้วยเกมของเขามากจนเขาจะได้รับรางวัลเมื่อถามอะไรก็ตาม
ชายคนนั้นบอกว่าเขาต้องการที่จะจ่ายในข้าว เขาต้องการเมล็ดข้าวสำหรับตารางแรกของกระดานหมากรุกสองสำหรับสอง, สี่สำหรับสาม, แปดสำหรับสี่และต่อ ๆ ไปจนถึงจัตุรัส 64
จักรพรรดิประหลาดใจที่ชายคนนั้นขอรางวัลเล็ก ๆ น้อย ๆ เช่นนี้ แต่เมื่อนักคณิตศาสตร์ของเขาเริ่มนับเขาก็สูญเสียหนึ่งในจังหวัดของเขา
งาน
กำหนดความยาวด้านข้างของกระดานหมากรุกสมมุติ (ซึ่งคือ 8 บนกระดานหมากรุกเริ่มต้น) และตัวทวีคูณระหว่างกำลังสอง (ซึ่งเป็น 2 ในตำนาน) คำนวณจำนวนข้าวที่จักรพรรดิต้องจ่ายให้กับผู้ชาย
หมายเหตุ
ความยาวด้านจะเป็นจำนวนเต็มบวกเสมอ ตัวคูณอาจเป็นจำนวนตรรกยะแทนก็ได้
หากภาษาที่คุณเลือกไม่สามารถแสดงตัวเลขที่มีขนาดใหญ่มากมันก็โอเคตราบใดที่โปรแกรมของคุณสามารถประมวลผลอินพุตที่เล็กลงได้อย่างถูกต้อง
นอกจากนี้หากภาษาที่คุณเลือกใช้ปัดเศษค่าที่มากขึ้น (ด้วยเครื่องหมายอธิบาย) มันก็โอเคถ้าค่าเหล่านั้นถูกต้องโดยประมาณ
Testcases
Input (side length, multiplier) => Output
8, 2 => 18446744073709551615
3, 6 => 2015539
7, 1.5 => 850161998.2854
5, -3 => 211822152361
256, 1 => 65536
2, 2 => 15
2, -2 => -5
โปรดทราบว่าสูตรที่ชัดเจน
result = (multiplier ^ (side ^ 2) - 1) / (multiplier - 1)
ดำเนินการผิดพลาดในmultiplier = 1
ฐานะ
1 ^ (side ^ 2) - 1 = 0
1 - 1 = 0
0 / 0 != side ^ 2 (as it should be)
เกณฑ์การให้คะแนน
นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์
If your language of choose can't display too large numbers, it's ok as long as your program can correctly process smaller inputs
ระวังที่ทำให้เกิดปัญหาในอดีต meta.codegolf.stackexchange.com/a/8245/31716