蓝桥杯Java真题练习:方格计数

目录

  • 题目描述
  • 思路
  • 源代码
  • 其他真题

题目描述

如图p1.png所示,在二维平面上有无数个1x1的小方格。
蓝桥杯Java真题练习:方格计数_第1张图片
我们以某个小方格的一个顶点为圆心画一个半径为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);
	}
}

其他真题

链接: 最全的2021蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解.

蓝桥杯Java真题练习:方格计数_第2张图片

你可能感兴趣的:(蓝桥杯Java真题,java,蓝桥杯,eclipse)