题目描述
如图所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为50000的圆。
你能计算出这个圆里有多少个完整的小方格吗?
代码
/**
* @author Fancier
* @version 1.0
* @description: TODO
* @date 2024/3/11 7:38
*/
public class Main {
public static void main(String[] args) {
long ans = 0, r = 50000, y = r;
for (long x = 1; x < r; x++) {
while (x * x + y * y > r * r) y--;
ans += y;
}
System.out.println(ans * 4);
}
}
题解
一个简单的方法是, 枚举第一象限坐标, 在用两个距离公式去测试统计合格点数
之前的数据1000还行 但数据量改成50000太大了会爆掉
改进方案
一个可行的方法是, 通过遍历第一象限的x坐标, 以缩减的方式测试得到该x坐标能对应的最大y坐标, 即可以知道这条线上能有多少合格方块
最后结果x4即可
具体代码参上
好的!本次分享到这就结束了
如果对铁汁你有帮助的话,记得点赞👍+收藏⭐️+关注➕
我在这先行拜谢了:)