Hintli bir efsane, Hindistan imparatorunu oyunuyla o kadar çok etkilemiş olduğu iddia edilen satranç oyununun mucidi hikayesini anlattı.
Adam pirinçle ödeme yapmak istediğini söyledi. Satranç tahtasının ilk karesi için iki tane, ikincisi iki, üçüncüsü dördüncü, dördüncü ve dördüncü ve sonraki 64. kareye kadar pirinç tanesi istedi.
İmparator, bu kadar küçük bir ödül istediği için şaşırdı, ama matematikçileri saymaya başladıkça, illerinden birini kaybetti.
Görev
Varsayımcı bir satranç tahtasının (varsayılan satranç tahtasında 8 olan) ve kareler arasındaki çarpan (efsanede 2 olan) tarafının uzunluğu göz önüne alındığında, imparatorun adama ödemesi gereken pirinç tanelerinin sayısını hesaplayın.
notlar
Yan uzunluk her zaman pozitif bir tamsayı olacaktır. Çarpan bunun yerine herhangi bir rasyonel sayı olabilir.
Seçim diliniz çok büyük sayılar gösteremiyorsa, programınız daha küçük girdileri doğru şekilde işleyebildiği sürece sorun olmaz.
Ayrıca, seçtiğiniz diliniz daha büyük değerleri (üstel işaretlerle birlikte) yuvarlarsa, bu değerlerin yaklaşık olarak doğru olup olmaması sorun değildir.
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
Lütfen açık bir formül olduğunu unutmayın.
result = (multiplier ^ (side ^ 2) - 1) / (multiplier - 1)
multiplier = 1
Gibi yanlış gerçekleştirir
1 ^ (side ^ 2) - 1 = 0
1 - 1 = 0
0 / 0 != side ^ 2 (as it should be)
puanlama
Bu kod golfü. Bayt cinsinden en kısa cevap kazanır.
If your language of choose can't display too large numbers, it's ok as long as your program can correctly process smaller inputs
Dikkat et, bu geçmişte sorunlara neden oldu. meta.codegolf.stackexchange.com/a/8245/31716