舍罕王的失算
相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8X8共64格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依次放完棋盘上64格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请编程求出国王总共需要将多少麦子赏赐给他的宰相。
第一格放1粒,则为2的0次方,第二格放2粒,则为2的1次方,第三格放4粒,则为2的平方,以此类推,第n格放的麦子粒数为2的n-1次方。我们只需要通过一个for循环让麦子数进行累加,求出结果即可。
#include<iostream>
using namespace std;
#include<cmath>//要用pow数学函数包含这个头文件
int main()
{
double sum=0;//sum即为麦子数的总和
for(int i=1;i<=64;i++)
{
sum=sum+pow(2,i-1);//对每个棋盘上的麦子数进行累加
}
cout<<"国王总共需要赏赐给宰相的麦子数为:"<<sum<<endl;
return 0;
}
运行结果如下: