故事:
相传现在流行的国际象棋是古印度舍罕王(Shirham)的宰相达依尔(Dahir) 发明的。舍罕王十分喜爱国际象棋,决定让达依尔自己要求得到什么赏赐。这位聪明的宰相指着8×8共64格的象棋盘说:”陛下,请你赏给我一些麦子吧,就在棋盘的第1格中放1粒,第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,一次放完棋盘上的64格,我就感恩不尽了。“
舍罕王让人扛来了一袋麦子,他要兑现达依尔的许偌。。。请问,舍罕王能兑现他的许偌吗?
摆放完棋盘上的64格共需多少麦子?这些小麦合多少吨(1吨小麦约2.4e7粒)?这些小麦相当于世界粮食年总产量(以2014年度数据2.48e9吨计算)的多少倍?
1 . 说明;
这是一个典型的等比数列求和问题。
总粒数 s=1+2+2^2+2^3+…+2^63
在通过 v=s/2.4e7把s粒小麦的重量折合成v吨,p=v/2.48e9把小麦的重量折合成全世界年总产量的倍数p。
2 .程序设计;
#include<stdio.h>
#include<math.h>
void main()
{
double t,s,v,p;
int i,n;
printf("请输入格数n:");
scanf("%d",&n);
t=s=1;
for(i=2;i<=n;i++)
{
t*=2;
s+=t;
}
v=s/2.4e7;
p=v/2.48e9;
if(n<=40)
printf("总麦粒数为:%.0f\n",s);
else
printf("总麦粒数约为:%.3e\n",s);
printf("小麦重量约为:%.0f吨\n",v);
printf("约相当于2014年世界粮食年总产量的%.0f倍\n",p);
getch();
}
3 .程序运行示例及注意事项;
请输入格数:64
总麦粒数约为:1.845e+019
小麦重量约为:768614336405吨
约相当于2014年世界粮食年总产量的310倍
输入其他数据可知:n=15格时才达1公斤,n=25格时可达1吨,n=56格时可超过2014年世界粮食年总产量。
注意 :本程序所得结果值非常大,所以要确定好变量的类型及其输出时的类型简化。