首页 > 编程语言 >经典算法——舍罕王算

经典算法——舍罕王算

时间:2022-09-24 09:55:53浏览次数:31  
标签:麦子 格内 一袋 舍罕 算法 小格 王算 include 国王

传说,印度的舍罕王打算重赏国际象棋的发明人,当时的宰相是西萨·班·达依尔。这位聪明的宰相胃口似乎并不大,他跑在国王面前说:“陛下,请您在这张棋盘的第一小格内,赏给我一粒麦子,在第二个小格内给两粒,第三格内给四粒,照这样每一小格内比前一小格加一倍。陛下啊,把这棋盘的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

相关文章

  • 算法练习-第三天【链表】
    链表203.移除链表元素参考:代码随想录203.移除链表元素看完题目的第一想法一道基本的链表题目,遍历链表如果当前节点的下一个节点值等于val,那么就将当前节点的Next指......
  • 6th 2022/6/8 算法总结·LCA·倍增
    开头的话这个算法对于大部分图论无环图题都是必备的,应多多复习大概是对于两个点的公共祖先倍增众所周知,为了找到公共祖先,最暴力的算法就莫过于一个个往上跳,直至相遇而......
  • 4th 2022/5/25 算法总结 哈希篇
    开头的话这个算法,并不像大部分其它的算法那样,逻辑正确后,时间复杂度一般都是较稳定的,哪怕是最高和最低之间也没差多少但哈希不一样,它时间复杂度较不稳定,虽然可以通过特殊......
  • 计算机系统结构大题精讲4-页面替换算法-Cache 组相连映像
    1、在一个采用LRU算法和组相连映像的Cache系统中,主存由0-15共16块组成;Cache分为2组,每组两块,每块大小为16个存储字。在某个程序执行时,访存的主存块地址流为:6、2、4、1、4、6......
  • KMP 算法实现
    #coding=utf-8defget_next_list(findding_str):#求一个字符串序列每个位置的最长相等前、后缀j=0#最长相等前缀的末位next=[0]#next数组用......
  • C语言经典算法100例二
    【程序21】题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一......
  • 算法实现2D OBB碰撞
    boxusingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassDrawLine:MonoBehaviour{publicVector3[]......
  • C语言经典算法100例
    【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#include<stdio.h>#include<stdlib.h>intmain(){inti,j,k,m;......
  • 凸包算法
    凸包的概念:在某个二维平面上的给定一个点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。凸包算法从点集中获取凸包的方法比较常用的有Jarvis步......
  • 「浙江理工大学ACM入队200题系列」问题 A: 零基础学C/C++34—— 3个数比较大小(冒泡排
    深夜写的,代码都还没来得及跑一便,可能有错误,欢迎指出,后续会检验一遍并修改错误.本题是浙江理工大学ACM入队200题第四套中的A题,同时给出了冒泡排序和选择排序算法......