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 請按任意鍵繼續. . .
,如需轉載請自行聯系原作者