相传印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二个格子放二粒麦子,以后每一个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽,其它什么也不要了。”国王想,“这还不容易!”让人扛了一袋麦子,但很快用光了,再扛出一袋还是不够,请你为国王算一下共要给达依尔多少小麦?(设1立方米小麦约1.4×108粒。)
#include <stdio.h>
#include <math.h>
int main()
{
unsigned long long x=0,sum=0;
for(int i=0;i<64;i++)
{
x=pow(2,i);
sum=sum+x;
}
printf("%llu",sum);
return 0;
}
注:%llu为无符号型长整型,所以小麦最大数量不会超过其最大范围,可以正常输出
文章评论