第九屆藍橋杯省賽 方格計數

2022-08-23 18:15:11 字數 1570 閱讀 3482

一、問題描述

如圖所示,在二維平面上有無數個1x1的小方格。我們以某個小方格的乙個頂點為圓心畫乙個半徑為1000的圓。你能計算出這個圓裡有多少個完整的小方格嗎?

注意:需要提交的是乙個整數,不要填寫任何多餘內容.

二、題目型別:結果填空、列舉

三、解題思路及**

怎麼可能這麼簡單!傻啊,情況都沒有考慮清楚,哭唧唧,要真在考場上這樣,我估計我就是比賽的重在參與型選手了。。。

分析了半徑=4的情況,看下圖

因為圓的對稱性,所以只需要計算乙個象限裡的完整小方格,再乘以4就是結果。

我一開始一直在找半徑與方格數在數學上的關係,就比如:

當 r = 1, 方格數 = 0;

當 r = 2, 方格數 = 2*2;

當 r = 3, 方格數 = (r-1)^2*4;

當 r = 4, 方格數 = (r-1)^2-1*4;

當 r = 5, 方格數 = (r-1)^2-3*4;

我也是個「人才」(微笑)。。。我決定換個思路:計算方格頂點(x,y)到原點(0,0)的距離,如果小於半徑r,那麼這個方格就是完整的方格。因為對稱性,所以只需要算乙個象限的完整方格個數。所以**是這樣的:

1

public

class

gridcount 11}

12}13 system.out.print(count*4);14}

15 }

嚯嚯,最後執行出來的結果為3137524,為了驗證我**的正確性,我把它帶入當半徑為3、4,結果跟手算的答案一樣,可把我給開心的。

到這裡,如果你的結果跟我一樣,那麼恭喜你,這道題0分。

仔細研究這個**的思路,會發現漏考慮了一種情況:當方格頂點(x,y)到原點(0,0)的距離== r !!!這種情況不是沒可能啊喂!可長點心吧,藍橋杯提交答案並不是馬上就能看到結果,如果你少考慮了一些特殊情況,就會導致題得0分!而且這還是結果填空題,要麼0分要麼得分,要麼死要麼活。。。

當 r = 5的時候,出現「方格頂點(x,y)到原點(0,0)的距離== r」的情況,所以這也告訴我們,多測試點例子,說不定可以解決您欠考慮呢(微笑),wtf。

修改**邏輯,正確**如下:

1

public

class

gridcount 11}

12}13 system.out.print(count*4);14}

15 }

執行得出的正確的結果為:3137548

四、反思與總結

做結果填空題的時候,一定要用多一點的例子去測試**邏輯的正確性,漏考慮現象在考場上發生很正常,只希望能夠盡量發現自己**的錯誤邏輯,爭取做對題,把分拿下。

考試坑很多,這是乙個。明明思路正確,但卻因為邏輯不夠嚴密而丟分,實在可惜。考試時一定要時刻謹記注意**邏輯的嚴密性!

加油加油啦~

第九屆藍橋杯省賽 測試次數

參考 x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是 摔手機。各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出乙個耐摔指數來,之後才允許上市流通。x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,...

全球變暖 第九屆藍橋杯省賽題目九

你有一張某海域nxn畫素的 表示海洋 表示陸地,如下所示 其中 上下左右 四個方向上連在一起的一片陸地組成一座島嶼。例如上圖就有2座島嶼。由於全球變暖導致了海面上公升,科學家 未來幾十年,島嶼邊緣乙個畫素的範圍會 被海水淹沒。具體來說如果一塊陸地畫素與海洋相鄰 上下左右四個相鄰畫素中有海洋 它就會被...

第九屆藍橋杯省賽(4) 測試次數

x星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是 摔手機。各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出乙個耐摔指數來,之後才允許上市流通。x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的...