2.9王的失算

发布时间 2023-05-04 16:41:09作者: Snor9

1.问题描述:国际象棋有64个格子第一个格子放1粒麦子,第二个格子放2粒麦子,第三个格子放3粒麦子......以此类推,最后64个格子中一共有多少粒麦子;

2.问题分析:这个问题的本质即从2的0次方一直加到2的63次方,最后总数是多少。

3.算法设计:这个问题需要两个简单的部分:第一部分为求出2的n次方,第二部分为将这个与之前所以积累的加起来;可以写一个函数来计算2的n次方,用64次循环来进行相加,容易出错的是该问题的数据结果庞大,不能用int来储存,否则会出现数据的粗乱,应该用double 或 long long 来储存该数据;

4.源代码:

#include<iostream>
using namespace std;
double leicheng(int N)
{
double zs=1;
for (int i = 1; i < N; i++)
{
zs *= 2;
}
return zs;
}
int main()
{
double zongshu = 0;
for (int i = 1; i <= 64; i++)
{
zongshu += leicheng(i);
}
cout << zongshu;
}