ylbtech-Arithmetic:Console-算法[for]-国王与老人的六十四格 |
1.A,案例 |
-- ========================================================
-- ylb:算法
-- Type:算法[for]
-- munu:国王与老人的六十四格
-- 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 请按任意键继续. . .
,如需转载请自行联系原作者