方格计数(2018年蓝桥杯JavaB组)

##方格计数
如图p1.png所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗?

注意:需要提交的是一个整数,不要填写任何多余内容。
p1.png方格计数(2018年蓝桥杯JavaB组)_第1张图片

public class 方格计数 {
     
	public static void main(String[] args) {
     
		int r=3,count=0;
		for(int x=1;x<=r;x++) {
     
			for(int y=1;y<=r;y++) {
     
				if(x*x+y*y<r*r) {
     
					count++;
				}
			}
		}
		System.out.println(count*4);
	}
}

解题思路:将圆按四个象限分为四份,遍历第一象限中方格左上角
若方格的左上角在圆中,则整个方格都在圆中
根据勾股定理判断每个方格左上角顶点到原点的距离,
若此点到原点的距离小于半径,则数目加一。
最后数目乘以四得总数。

你可能感兴趣的:(方格计数(2018年蓝桥杯JavaB组))