问题描述
国际象棋共有 64格,请在第 1 个棋盘格放 1 粒麦子,在第 2 个棋盘格放 2 粒麦子,在第 3 个棋盘格放 4 粒麦子,在第 4个棋盘格放 8 粒麦子,…后一格的数字是前一格的两倍,直到放完所有棋盘格。
请你借助计算机准确地计算,到底需要多少粒麦子?
代码实现
fun main(){
// 公式求
var sum:BigInteger = BigInteger.valueOf(0)
var m: BigInteger
sum = BigInteger.valueOf(2).pow(64) - BigInteger.valueOf(1)
println("总数== $sum")
//循环求
sum = BigInteger.valueOf(0)
for (index in 1..64) {
m = BigInteger.valueOf(1)
for (index1 in 1 until index){
m.multiply(BigInteger.valueOf(2)).also { m = it }
}
sum+=m
}
print("总数== $sum")
}