Una leggenda indiana racconta la storia del presunto inventore del gioco degli scacchi, che ha impressionato così tanto l'imperatore dell'India con il suo gioco da essere ricompensato da qualsiasi cosa gli fosse stata chiesta.
L'uomo disse che voleva essere pagato in riso. Voleva un chicco di riso per il primo quadrato della scacchiera, due per il secondo, quattro per il terzo, otto per il quarto e così via, fino al 64 ° quadrato.
L'imperatore fu sorpreso dal fatto che l'uomo avesse chiesto una ricompensa così piccola, ma quando i suoi matematici iniziarono a contare, finì per perdere una delle sue province.
Compito
Data la lunghezza del lato di un'ipotetica scacchiera (che è 8 su una scacchiera predefinita) e il moltiplicatore tra i quadrati (che è 2 nella legenda), calcola il numero di chicchi di riso che l'imperatore deve pagare all'uomo.
Gli appunti
La lunghezza del lato sarà sempre un numero intero positivo. Il moltiplicatore potrebbe invece essere qualsiasi tipo di numero razionale.
Se la tua lingua preferita non può visualizzare numeri molto grandi, va bene finché il tuo programma può elaborare correttamente input più piccoli.
Anche se la tua lingua preferita arrotonda valori più grandi (con notazioni esponenziali), va bene se questi valori sono approssimativamente corretti.
Casi test
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
Si prega di notare che la formula esplicita
result = (multiplier ^ (side ^ 2) - 1) / (multiplier - 1)
Si comporta male su multiplier = 1
, come
1 ^ (side ^ 2) - 1 = 0
1 - 1 = 0
0 / 0 != side ^ 2 (as it should be)
punteggio
Questo è code-golf. Vince la risposta più breve in byte.
If your language of choose can't display too large numbers, it's ok as long as your program can correctly process smaller inputs
Attento, questo ha causato problemi in passato. meta.codegolf.stackexchange.com/a/8245/31716