zoukankan      html  css  js  c++  java
  • Console算法[for]国王与老人的六十四格

    ylbtech-Arithmetic:Console-算法[for]-国王与老人的六十四格
     
    1.A,案例
    -- ========================================================
    -- ylb:算法
    -- Type:算法[for]
    -- munu:国王与老人的六十四格
    -- 20:32 2012/3/16
    -- ========================================================
     
    案例:
        印度有个国王,他拥有超人的权力和巨大的财富。但权力和财富最终让他对生活到厌倦。他渴望找新鲜的刺激。有一天,来了一位老人,他带着自己的发明“国际象棋”来朝见国王。国王见了这新奇的玩意儿非常喜欢,就和老人对下起来。但是一下上手了,就舍不得放下,就留着老人一连下了三天三夜。到了第四天早上,国王感到非常满足,就对老人说道:“你给了我无穷的乐趣。为了奖赏你,我现在决定,你可以在我这儿得到你所要的任何东西。”
        的确,这位国王是如此富有,难道还有什么要求不能满足吗?但老人却回答说:“万能的王啊!你虽然是世界上最富有的人,恐怕也满足不了我的要求。”
       国王不高兴了,他皱起眉头,严厉地说道:“说吧!哪怕你要半个王国。”
       “请王上下令在棋盘的第一格上放一粒小麦,在第二格上方两粒小麦,在第三格放四粒小麦,在第四格上放八粒小麦,这就样每次增加一倍,一直到地六十四格为止。”
      “可怜的老人,你的要求就这么一点点吗?”国王不禁笑了起来。他立即命人去取一袋小麦来,按照老人的要求数给他。但是一袋小麦很快完了。国王觉得有点奇怪,就命人再取一袋来,接着是第三袋、第四袋······小麦堆积如山,但是离第六十四格还远得很呐。只见国王的脸色由惊奇逐渐转为阴沉,最后竟勃然大怒。原来,他国库里的小麦已经搬光了,还到不了棋盘上的第五十格。王国认为老人在戏弄他,就下令把老人杀了。
    1.B,解决方案

     1.B.1,算法一

    using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            /// <summary>
            /// ylb:分析
            /// 第一格是2的0次方=1,第二格是2的1次方=2,第三格是2的2次方=4,第四格是2的3次方=8,······
            /// 第六十四格是2的63次方=?
            /// </summary>
            static void Main(string[] args)
            {
                int num = 64; //共计64格
    
                double sum = 0; //设统计初始值为0
    
                //累加
                for (int i = 1; i <= num; i++)
                {
                    sum += Math.Pow(2, i - 1); //等同于sum =sum + Math.Pow(2, i - 1);                
                }
    
                Console.WriteLine(sum);
    
            }
        }
    }

    1.B.2,算法二

     using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            /// <summary>
            /// ylb:分析
            /// 第一格是2的0次方=1,第二格是2的1次方=2,第三格是2的2次方=4,第四格是2的3次方=8,······
            /// 第六十四格是2的63次方=?
            /// </summary>
            static void Main(string[] args)
            {
                double sum = 0, gs = 1; //sum:麦子粒数总和,gs:每一个对应的粒数
    
                //累加
                for (int i = 1; i <= 64; i++)
                {
                    sum += gs;
                    gs = Math.Pow(2, i);
                }
    
                Console.WriteLine(sum);
    
            }
        }
    }
    1.C,运行结果
    1.84467440737096E+19
    请按任意键继续. . .
    warn 作者:ylbtech
    出处:http://ylbtech.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    elasticsearch 事务日志 sync 都干了些什么?
    elasticsearch 事务日志是个啥东西?
    elasticsearch 分片恢复经历了哪些步骤?
    定向爬取网页内容
    文件查询之三:文件和目录的批量操作
    文件查询之二:文件属性查询
    文件查询之一:文件名和文件后缀查询
    记一次SQL联合查询注入工具的编写
    线程间使用socket通信的计算器
    简单的远程加解密文件
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2921459.html
Copyright © 2011-2022 走看看