• 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/ylbtech/p/2921459.html
Copyright © 2020-2023  润新知