天天看點

藍橋杯Java真題練習:方格計數

目錄

  • ​​🍋題目描述​​
  • ​​🍋思路​​
  • ​​🍋源代碼​​
  • ​​🍋其他真題​​

🍋題目描述

如圖p1.png所示,在二維平面上有無數個1x1的小方格。

藍橋杯Java真題練習:方格計數

我們以某個小方格的一個頂點為圓心畫一個半徑為1000的圓。

你能計算出這個圓裡有多少個完整的小方格嗎?

注意:需要送出的是一個整數,不要填寫任何多餘内容。

🍋思路

這道題的話,是填空題。

思路就是暴力枚舉。

以圓的圓心為原點建立xOy坐标系。分成4個相等的部分,我們求其中一部分,最後乘4即可。

我們以第一象限來求,以方格的右角點為标記。滿足xx+yy<=1000*1000,ans++

  • 答案: 3137548

18年的b組第二題這麼簡單,屬實有點舒服。

🍋源代碼

public class Main {
  public static void main(String[] args) {
    int ans=0;
    for(int i=1;i<1000;i++) {
      for(int j=1;j<1000;j++) {
        if(i*i+j*j<=1000*1000) {
          ans++;
        }
      }
    }
    System.out.println(ans*4);
  }
}      

優化之後的方法:

public class Main {
  public static void main(String[] args) {
    int ans=0;
    int y=1000;
    for(int x=1;x<1000;x++) {
      while(x*x+y*y>1000000&&y>0){
        y--;
      }
      ans+=y;
    }
    System.out.println(ans*4);
  }
}