如图p1.png所示,在二维平面上有无数个1x1的小方格。
我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。
你能计算出这个圆里有多少个完整的小方格吗?
注意:需要提交的是一个整数,不要填写任何多余内容。
这道题的话,是填空题。
思路就是暴力枚举。
以圆的圆心为原点建立xOy坐标系。分成4个相等的部分,我们求其中一部分,最后乘4即可。
我们以第一象限来求,以方格的右角点为标记。满足xx+yy<=1000*1000,ans++
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蓝桥杯算法课《算法很美》的学习笔记总目录+真题详解.