前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法-经典趣题-舍罕王赏麦

算法-经典趣题-舍罕王赏麦

作者头像
joshua317
发布2021-10-22 15:48:47
6700
发布2021-10-22 15:48:47
举报
文章被收录于专栏:技术博文技术博文

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/170

一、问题

舍罕王赏麦问题是古印度非常著名的一个级数求和问题。

传说国际象棋的发明者是古印度的西萨·班·达依尔。那时的国王是舍罕,世人称为舍罕王。当时舍罕王比较贪玩,位居宰相的西萨·班·达依尔便发明了国际象棋献给舍罕王。舍罕王非常喜欢,为了奖励西萨·班·达依尔,便许诺可以满足他提出的任何要求。

西萨·班·达依尔灵机一动,指着8×8=64的棋盘说:“陛下,请您按棋盘的格子赏赐我一点麦子吧,第1个小格赏我一粒麦子,第2个小格赏我两粒,第3个小格赏四粒,以后每一小格都比前一个小格赏的麦粒数增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦粒都赏赐给我,我就心满意足了。”舍罕王觉得这是一个很小的要求,便满口答应了,命人按要求给西萨·班·达依尔准备麦子。但是,不久大臣计算的结果令舍罕王大惊失色。问题是:舍罕王需要赏赐多少粒麦子呢?

二、分析

我们来分析下这个问题,国际象棋棋盘总共有8×8=64格。按照西萨·班·达依尔的要求,每一格中放置的麦粒数量如下。

第1格:1粒;

第2格:1×2=2粒;

第3格:1×2×2=4粒;

第4格:1×2×2×2=8粒;

……

将每一格的麦子粒数加起来:sum=1+2+4+8+……

一直重复到64,将棋盘8×8=64格都计算完毕便可以计算出赏赐给西萨·班·达依尔总的麦粒数。如果使用数学的语言来描述,上述式子可以表述为如下形式:

三、编程

代码语言:javascript
复制
package com.joshua317;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int n;//棋盘总数
        double sum;//总的麦粒数
        System.out.println("汉王舍麦问题求解");
        System.out.println("输入棋盘总数:");
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        sum = hanWangSheMai(n);
        System.out.printf("总麦粒数为:%f \n", sum);
        //假定25000粒麦子为1公斤,那么25000000粒麦子为1吨
        System.out.printf("总吨数为:%.2f \n", sum/25000/1000);
    }

    /**
     * @author joshua317
     * @param  n 棋盘数
     * @return double 返回的总数
     */
    public static double hanWangSheMai(int n)
    {
        int i;
        double sum = 0;
        double temp = 1;
        for (i = 0; i < n; i++) {
            sum = sum + temp;
            temp = temp * 2;
        }
        return sum;
    }
}

注意:假定25000粒麦子为1公斤,那么25000000粒麦子为1吨

本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/170

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、问题
  • 二、分析
  • 三、编程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档