Індійська легенда розповідає історію про передбачуваного винахідника гри в шахи, який вразив імператора Індії своєю грою настільки, що він отримав би нагороду за все, що просять.
Чоловік сказав, що хоче платити за рис. Він хотів зерна рису для першого квадрата шахової дошки, двох для другого, чотирьох для третього, восьмого для четвертого тощо, аж до 64-ї площі.
Імператор був вражений тим, що чоловік попросив таку маленьку винагороду, але, оскільки його математики почали рахувати, він закінчив втратити одну зі своїх провінцій.
Завдання
Враховуючи довжину сторони гіпотетичної шахової дошки (яка становить 8 на шаховій дошці за замовчуванням) та множник між квадратами (що в легенді 2), обчисліть кількість зерен рису, які імператор повинен заплатити людині.
Примітки
Бічна довжина завжди буде додатним цілим числом. Натомість множник може бути будь-яким раціональним числом.
Якщо ваша обрана мова не може відображати дуже великі цифри, це добре, поки ваша програма може правильно обробляти менші вводи.
Також якщо ваша мова вибору округляє більші значення (з експоненціальними позначеннями), добре, якщо ці значення є приблизно правильними.
Тестові шафи
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