且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Console-算法[for]-国王与老人的六十四格

更新时间:2022-07-02 18:17:52

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

 1.B.1,算法一

Console-算法[for]-国王与老人的六十四格
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);

        }
    }
}
Console-算法[for]-国王与老人的六十四格

1.B.2,算法二

Console-算法[for]-国王与老人的六十四格
 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);

        }
    }
}
Console-算法[for]-国王与老人的六十四格
1.C,运行结果
1.84467440737096E+19
请按任意键继续. . .

,如需转载请自行联系原作者