暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

算法题:方格计数

云丶言 2021-11-26
1559

题目来源:第九届蓝桥杯省赛真题

题目描述

在二维平面上有无数个1×1的小方格。

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

题目解析

其实能否做出此题,在于能否想起我们在高中时经常遇见的“老朋友”——勾股定理

以圆的第一象限为例,最靠近圆边缘的方格,右上角是贴于圆的,那么此时该点的x,y坐标的平方相加将会等于圆半径的平方,即 x2 + y2 = r2(勾股定理)。

也就是对于第一象限来说,只要方格的右上角坐标平方之和小于或等于圆半径的平方,他就是一个完整的方格,获取到该象限完整方格数量后乘以4既能得到整个圆完整方格的总数。


具体代码

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


运行结果

3137548

若上述代码存在任何错误,或者您有更优解,欢迎在下方评论区提出~!!

文章转载自云丶言,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论