方格计数(2018年第九届蓝桥杯B组JAVA题)

描述

如图p1.png所示,在二维平面上有无数个1x1的小方格。


我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗? 

注意:需要提交的是一个整数,不要填写任何多余内容。

方格计数(2018年第九届蓝桥杯B组JAVA题)_第1张图片

 

 

实现代码

public class Solution {
	public static void main(String args[]) {
		int sum =0;
		int x =(int)Math.floor(1000/Math.sqrt(2));
		int y = x;
		while(y>=1) {
			if(x*x+y*y<=1000000 && (x+1)*(x+1)+y*y>1000000) {
				sum+=x;
				y--;
			}else{
				x++;
			}
		}
		int r= (int)Math.floor(1000/Math.sqrt(2));
		sum=sum+sum-r*r;
		System.out.println("共有"+sum*4+"个正方形");
		
	}
}

 

运行结果

你可能感兴趣的:(编程)