传说,印度的舍罕王打算重赏国际象棋的发明人,当时的宰相是西萨·班·达依尔。这位聪明的宰相胃口似乎并不大,他跑在国王面前说:“陛下,请您在这张棋盘的第一小格内,赏给我一粒麦子,在第二个小格内给两粒,第三格内给四粒,照这样每一小格内比前一小格加一倍。陛下啊,把这棋盘的64个小格放满就行啦!”国王一听,心中暗喜,这个奇妙的发明家所请求的赏赐并不多,便答道:“爱卿,你当然会如愿以偿的!”并立即令人把一袋麦子拿来,叫仆人照办。谁知还没到第二十格,袋子已经空了。一袋又一袋的麦子扛到国王面前,但麦粒数一格接一格迅速增长,国王很快就看出,即便把全印度的麦子都给他的宰相,也实现不了他的诺言!
#define _CRT_SECURE_NO_WARNINGS
#pragma comment(lib, "legacy_stdio_definitions.lib")
#include <stdio.h>
#include <math.h>
//舍罕王失算
void main() {
double t, s, v, p;
int i, n;
printf("请输入格数:");
scanf("%d", &n);
t = 1; s = 1;
for (i = 2; i <= n;i++) {
t = t * 2;//t为第i格的麦子数
s = s + t;//s求所有格的麦粒和
}
v = s / 2.4e7;//一吨麦粒约为2.47e颗粒
p = v / 2.48e9;//世界粮食年总产量约为2.48e9吨
if (n <= 40) {
printf("总麦粒数为:%.0f\n", s);
}
else {
printf("总麦粒数是:%.3e\n", s);
}
printf("小麦的重量约为:%.0f吨\n", v);
printf("约相当于世界粮食年总产量的%.0f倍\n",p);
}
标签:麦子,格内,一袋,舍罕,算法,小格,王算,include,国王
From: https://www.cnblogs.com/zihao1/p/16724990.html