【c语言趣味编程100例】舍罕王的失算
问题:相传现在流行的国际象棋是古印度舍罕王(Shirham)的宰相达依尔(Dahir) 发明的
舍罕王十分喜爱国际象棋,决定让达依尔自己要求得到什么赏赐。这位聪明的宰相指着
8×8共64格的象棋盘说:”陛下,请你赏给我一些麦子吧,就在棋盘的第1格中放1粒,
第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,一次放完棋盘上的64格,
我就感恩不尽了。“
编程思路:这其实就是一个求和的问题
第一格 1 1
第二个 2 2
第三格 3 4
第四格 4 8
------------
第64格 64 2的63次方因此 可以发现规律 就是从1开始到64 相当于求和 2的0次幂到 2的63次幂
#include<stdio.h>
#include<math.h>
void main(){
/*
问题:相传现在流行的国际象棋是古印度舍罕王(Shirham)的宰相达依尔(Dahir) 发明的
舍罕王十分喜爱国际象棋,决定让达依尔自己要求得到什么赏赐。这位聪明的宰相指着
8×8共64格的象棋盘说:”陛下,请你赏给我一些麦子吧,就在棋盘的第1格中放1粒,
第2格中放2粒,第3格中放4粒,以后每一格都比前一格增加一倍,一次放完棋盘上的64格,
我就感恩不尽了。“
编程思路:这其实就是一个求和的问题
第一格 1 1
第二个 2 2
第三格 3 4
第四格 4 8
------------
第64格 64 2的63次方
因此 可以发现规律 就是从1开始到64 相当于求和 2的0次幂到 2的63次幂
**/
double sum = 0;
int i;
for(i=1;i<=64;i++)
sum = sum+pow(2,i-1);
printf("国王总共需要赏赐给宰相的麦子数为:%lf\n",sum);
}