zoukankan      html  css  js  c++  java
  • 算法-经典趣题-舍罕王赏麦

    一、问题

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

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

    西萨·班·达依尔灵机一动,指着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格都计算完毕便可以计算出赏赐给西萨·班·达依尔总的麦粒数。如果使用数学的语言来描述,上述式子可以表述为如下形式:

     

    三、编程

    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 
    ", sum);
            //假定25000粒麦子为1公斤,那么25000000粒麦子为1吨
            System.out.printf("总吨数为:%.2f 
    ", 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吨

     

     

  • 相关阅读:
    数组方法延伸
    Vue基础知识之过滤器(四)
    Vue基础知识之vue-resource和axios(三)
    【正则】对RegExp执行typeof运算的结果
    【正则】所有的字符(总)
    学习正则有感by魔芋(命名问题)
    关于正则表达式(转)
    【15】ES6 for Humans: The Latest Standard of JavaScript: ES2015 and Beyond
    中国首届CSS开发者大会讲师照片
    拥有强大的自我驱动力是一种怎样的体验?
  • 原文地址:https://www.cnblogs.com/joshua317/p/15424475.html
Copyright © 2011-2022 走看看