算法_数学问题_Question9_舍罕王的失算(java实现)

这篇文章讲述的是算法初级部分的舍罕王的失算问题的java实现,参考的书籍为清华大学出版社出版,贾蓓等编著的《c语言趣味编程1000例》,如有错误或者不当之处,还望各位大神批评指正。

问题描述

相传国际象棋是古印度舍罕王的宰相达伊尔发明的。舍罕王非常喜爱象棋,决定让宰相自己选择一种赏赐。这位聪明的宰相指着8*8共64格的象棋说:陛下,请您给我一些麦子吧。就在棋盘的第1格中放入1粒,第2格放入2粒,第3格放入4粒,以后每格都比前一格增加一倍,依次放完棋盘上的64格,我就感激不尽了。舍罕王让人扛来一袋麦子,他说要兑现他的许诺。请编程求出国王共需要将多少粒麦子赏赐给他的宰相。

算法分析

根据题意,第1格放入2^0,第2格放入2^1,…,第N格放入2^(N-1)再累加起来。

代码实现

package mathematics;

public class Q9_HansheKing {
    /**
     * 问题描述:相传国际象棋是古印度舍罕王的宰相达伊尔发明的。舍罕王非常喜爱象棋,决定
     *          让宰相自己选择一种赏赐。这位聪明的宰相指着8*8共64格的象棋说:陛下,请
     *          您给我一些麦子吧。就在棋盘的第1格中放入1粒,第2格放入2粒,第3格放入4粒
     *          ,以后每格都比前一格增加一倍,依次放完棋盘上的64格,我就感激不尽了。舍
     *          罕王让人扛来一袋麦子,他说要兑现他的许诺。请编程求出国王共需要将多少粒
     *          麦子赏赐给他的宰相。
     * 
     * 算法分析:根据题意,第1格放入2^0,第2格放入2^1,...,第N格放入2^(N-1)再累加起来。
     */
    public static void main(String[] args) {
        double sum =0 ;
        for(int N=1 ; N<=64 ;N++){
            sum += Math.pow(2, N-1) ;
        }
        System.out.printf("舍罕王要赏赐给宰相%.0f粒麦子!",sum);
    }
}

样例输出

舍罕王要赏赐给宰相18446744073709552000粒麦子!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值