帮忙解决一道c++的题

来源:百度知道 编辑:UC知道 时间:2024/07/03 11:20:14
相传古代印度有个国王很贪玩,重金悬赏发明奇妙游戏的术士。有一个聪明的术士把他发明的一种棋数献给了国王。国王玩儿废寝,要重赏这位术士,术士只提了个小小的要求:请在棋盘上的第一个格里放进一粒米,在第二个格里放进两粒米,在第三个格里放进一粒米,.......,第一个格斗放进比前一个格多一粒米,把棋盘上的64个格都放满,这就是我要的奖赏。这些米可以盖住地球的表面。全世界要几百年才能种出来。聪明的术士用书上的几何级数,愚弄了贪玩的国王。放满64个格共需要多少粒米?请用dev-c++ (4.9.9.2)
编写程序!!!
double ;register int i;
是什么啊

#include <iostream>
using namespace std;

double fac (int p)
{
double t = 1;
register int i;

for (i=0; i<p; i++)
t *= 2;
return t;
}

int main()
{
int i;
double sum = 0;
for (i=0; i<63; i++)
sum += fac (i);

cout << sum;

return 0;
}

double是一种数据类型( 实数型) ,范围比整数型大很多.
register int 和int 一样,是整型变量,但register型变量是存储在CPU寄存器中,因而运算速度、调用速度快很多,但由于寄存器的空间相对于内存而言小很多,一般只把循环变量申明为register类型。

顺便说一下,这道题也可以用等比数列求和公式,但上面的代码应该更符合“编程”吧。这里还是补充一下等比数列求和公式:
数列A是一个等比数列,a1是首项,公比为q,共有n项.
则等比数列求和公式为:
s = (1-q^n) / (1-q) * a1;
所以上面的题中,第一项为1,共64项,公比为2.则和为:
2^64-1

汗,用等比数列的求和公式啊

等比数列求和公式嘛
2^0+2^1+2^2+.......2^63=2^64-1