0
点赞
收藏
分享

微信扫一扫

蓝桥杯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);
}
}


蓝桥杯Java真题练习:方格计数_角点_02


举报

相关推荐

0 条评论