Une légende indienne raconte l'histoire de l'inventeur présumé du jeu d'échecs, qui a tellement impressionné l'empereur des Indes avec son jeu qu'il serait récompensé par tout ce qui lui serait demandé.
L'homme a dit qu'il voulait être payé en riz. Il voulait un grain de riz pour le premier carré de l'échiquier, deux pour le second, quatre pour le troisième, huit pour le quatrième et ainsi de suite jusqu'au 64ème carré.
L'empereur était étonné que l'homme demande une si petite récompense, mais lorsque ses mathématiciens ont commencé à compter, il a fini par perdre l'une de ses provinces.
Tâche
Étant donné la longueur du côté d'un échiquier hypothétique (qui est 8 sur un échiquier par défaut) et le multiplicateur entre les carrés (qui est 2 dans la légende), calculez le nombre de grains de riz que l'empereur doit payer à l'homme.
Remarques
La longueur du côté sera toujours un entier positif. Le multiplicateur pourrait plutôt être n'importe quel type de nombre rationnel.
Si la langue de votre choix ne peut pas afficher de très grands nombres, c'est correct tant que votre programme peut traiter correctement des entrées plus petites.
De plus, si votre langue de choix arrondit les valeurs les plus grandes (avec des notations exponentielles), il est acceptable que ces valeurs soient approximativement correctes.
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
Veuillez noter que la formule explicite
result = (multiplier ^ (side ^ 2) - 1) / (multiplier - 1)
Effectue mal sur multiplier = 1
, comme
1 ^ (side ^ 2) - 1 = 0
1 - 1 = 0
0 / 0 != side ^ 2 (as it should be)
Notation
C'est du code-golf. La réponse la plus courte en octets l'emporte.
If your language of choose can't display too large numbers, it's ok as long as your program can correctly process smaller inputs
Attention, cela a causé des problèmes dans le passé. meta.codegolf.stackexchange.com/a/8245/31716