Re: [其他] 尋找更快的方法算這個題目嗎?

看板Math作者 (f0VMRgEBA)時間12年前 (2013/10/05 02:41), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《lily4 (lily)》之銘言: : 這是一個很簡單理解的algorithm, : 計算不複雜但就是"煩" : 加上考試的時候時間一逼下來, : 很容易就亂了陣腳 : 考試的時候花了快半小時在算這題 : 雖然拿到了分數 但我想在考試的設計上, : 最多最多五分鐘就應該要估得出來。 : 所以我想請教大家這一題是不是有非土法大煉鋼的方式 : 他是要跑兩個loops, : 大loop是a, 小loop是b. : 一開始a=0, b=0, : a先固定住,b從0開始變動 : 如果a^2+b^2<2500, : 就維持a=0, 但b要加1, : 若符合a^2+b^2<2500, b再加1, : 這樣一直重複到不符合a^2+b^2<2500才停止, : 然後Ci=count,紀錄這個process重複的次數, : 比如說a=0, b可以從0一直到49, 所以C0=50, : a=1, b可以從0一直到49, C1=50, : a=2,3,....,9, b都是可以從0一直到49. : 題目最後的問題是總count大約是多少? : 概數以千為單位, 1000,2000,3000,etc. : 我當時把這題留到最後,告訴自己靜下心算就有繡花針了, : 從a=0,1,....一直算平方算減法算到a=35,b=35, : 然後a=36以上時就利用先前算a=0~35的結果去反推Ci, : 然後再逐個加起來。 : 最後答案雖然對了,但自己把以上programming的時候, : 得到的數字是2006, 我當時考試算1939. : 所以我想問大家,集思廣益一下是不是有什麼good idea, : 像高斯算1加到100的那種巧算法~~ : 謝謝大家!! 換個概念來看 把 (a,b) 看成座標的話 那這題在算的就是有多少格子點在 x^2+y^2=50^2 在第一象限中的 1/4 圓裡 其中座標軸上的要算, 圓上的不算 圖一畫出來想必你應該就可以看出來確實有一個稍微快些的方法: 在 1/4 圓中切一塊儘量大 邊跟座標軸平行的正方形 正方形裡的一口氣算完之後剩下的再慢慢數 這塊正方形正如你所算的裡面包含了 (0,0) 到 (34,34) 的格子點 ((35,35) 在圓外 XD) 所以格子點數至少該有 35^2 = 1225 個 而剩下的部份用個很粗糙的估計法是兩個長 35 寬 15 的三角形 裡面至少有 35*15 = 525 個點 合計是 1750 個 考慮到這個結果是有少許低估的話就能夠選擇 2000 做為答案了 --- 不過既然都畫出圖了 那其實有一個更有趣的做法 直接求出這個 1/4 圓的面積為 (1/4)(50)(50)(π) = 625π 因為π稍大於 3 所以 625π 就大約是 2000 所以就選 2000 XD 之所以這個做法可行的原因是 如果把座標平面上舖滿單位方格的話 上面的格子點其實就可以看成是方格的左下角點 這樣一來 格子點數就會大約跟方格數相同 (邊界會有少許誤差, 不過反正這題問估計) 於是要求的格子點數就大約跟 1/4 圓面積相等了 -- 'You've sort of made up for it tonight,' said Harry. 'Getting the sword. Finishing the Horcrux. Saving my life.' 'That makes me sound a lot cooler then I was,' Ron mumbled. 'Stuff like that always sounds cooler then it really was,' said Harry. 'I've been trying to tell you that for years.' -- Harry Potter and the Deathly Hollows, P.308 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.39.63

10/05 02:50, , 1F
Hi~謝謝您的幫忙,我正想上來update我找到了
10/05 02:50, 1F

10/05 02:50, , 2F
就是您說的最後一個方法!!
10/05 02:50, 2F
文章代碼(AID): #1IJmkz_o (Math)
文章代碼(AID): #1IJmkz_o (Math)