第九届蓝桥杯java B组—第二题方格计数(详细介绍)
文章目錄
- 1.題目如下
- 2.解題思路
- 3.詳細(xì)講解
- 4.代碼實(shí)例
- 5.答案
最近正在練習(xí)藍(lán)橋杯的習(xí)題,做到第九屆籃球杯的第二題(方格計(jì)數(shù))的時(shí)候,發(fā)現(xiàn)沒(méi)有思路,就上網(wǎng)上查了一些資料,感覺(jué)說(shuō)的不夠詳細(xì),可能也是大佬們都已經(jīng)懂了,有些東西沒(méi)必要說(shuō),今天小編在這里講解一下自己的思路:
1.題目如下
如圖p1.png所示,在二維平面上有無(wú)數(shù)個(gè)1x1的小方格。
我們以某個(gè)小方格的一個(gè)頂點(diǎn)為圓心畫(huà)一個(gè)半徑為1000的圓。 你能計(jì)算出這個(gè)圓里有多少個(gè)完整的小方格嗎? 注意:需要提交的是一個(gè)整數(shù),不要填寫(xiě)任何多余內(nèi)容。
2.解題思路
我們只看第一象限,圓心為坐標(biāo)原點(diǎn),一共四個(gè)象限,計(jì)算出一個(gè)象限的所有完整方格×4即可、在第一象限里面,以x軸遞增的是i,以y軸遞增的是j,我們找一個(gè)離圓點(diǎn)最近的小正方形(1×1)為例,利用勾股定理:對(duì)角線2=長(zhǎng)2+寬2,可知道對(duì)角線長(zhǎng)度的平方,那我們就可以利用每個(gè)正方形或者長(zhǎng)方形從圓點(diǎn)到右上角距離(就是對(duì)角線)的平方跟1000×1000(r2)相比就行,只要比r2小的或者等于r2的,就是在范圍之內(nèi)了
3.詳細(xì)講解
如下如所示:
我們紫色區(qū)域的半徑為3的正方形,以x軸遞增的是i,以y軸遞增的是j,兩個(gè)長(zhǎng)方形所在的黃線他們的長(zhǎng)度的平方分別為,短黃線:22+12=5,長(zhǎng)黃線:32+22=13。再跟r2=32=9相比較5<9,13>9,即長(zhǎng)黃線不在范圍內(nèi),短黃線在范圍之內(nèi)。
4.代碼實(shí)例
public class Lanqiao {public static void main(String[] args) {//這里定義一個(gè)計(jì)數(shù)器count,用來(lái)記錄最終結(jié)果int count = 0;//題目要求的半徑為1000的圓int rr = 1000*1000;//這里的1就代表第一個(gè)方格以此類(lèi)推1000就代表第1000個(gè)方格for(int i=1;i<=1000;i++) {for(int j = 1;j <= 1000;j++) {//根據(jù)解題思路即可得到以下條件 if(i*i + j*j <= rr) {count++;}}System.out.println(count*4); }}}5.答案
3137548
如果還有哪些地方不理解的話,請(qǐng)?jiān)谠u(píng)論區(qū)留言,或者是有更簡(jiǎn)單的方法的話也可以分享一下
總結(jié)
以上是生活随笔為你收集整理的第九届蓝桥杯java B组—第二题方格计数(详细介绍)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java Arrays.sort()的几
- 下一篇: 第九届蓝桥杯java B组—第三题复数幂