Legenda India menceritakan kisah dugaan penemu permainan catur, yang sangat mengesankan kaisar India dengan permainannya sehingga ia akan mendapatkan imbalan dengan apa pun yang diminta.
Pria itu berkata dia ingin dibayar dengan beras. Dia menginginkan sebutir beras untuk kotak pertama dari papan catur, dua untuk yang kedua, empat untuk yang ketiga, delapan untuk yang keempat, dan seterusnya, sampai kotak ke-64.
Kaisar kagum bahwa orang itu meminta hadiah kecil, tetapi ketika matematikawannya mulai menghitung, dia akhirnya kehilangan salah satu provinsi.
Tugas
Mengingat panjang sisi papan catur hipotetis (yaitu 8 pada papan catur default) dan pengganda antara kotak (yang 2 dalam legenda), hitung jumlah butir beras yang harus dibayar oleh kaisar kepada lelaki itu.
Catatan
Panjang sisi akan selalu menjadi bilangan bulat positif. Pengganda bukan bisa berupa bilangan rasional apa pun.
Jika bahasa pilihan Anda tidak dapat menampilkan angka yang sangat besar, tidak masalah selama program Anda dapat memproses input yang lebih kecil dengan benar.
Juga jika bahasa pilihan Anda membulatkan nilai yang lebih besar (dengan notasi eksponensial), tidak apa-apa jika nilai-nilai itu kira-kira benar.
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
Harap perhatikan bahwa rumus eksplisit
result = (multiplier ^ (side ^ 2) - 1) / (multiplier - 1)
Melakukan salah pada multiplier = 1
, seperti
1 ^ (side ^ 2) - 1 = 0
1 - 1 = 0
0 / 0 != side ^ 2 (as it should be)
Mencetak gol
Ini adalah kode-golf. Jawaban terpendek dalam byte menang.
If your language of choose can't display too large numbers, it's ok as long as your program can correctly process smaller inputs
Hati-hati, itu telah menyebabkan masalah di masa lalu. meta.codegolf.stackexchange.com/a/8245/31716