我自己是没想出来,然后参考这位博主的代码,才了解的这个题目该怎么去做。
想要了解更多可以点击上面的连接,查看原博主的代码哦。
很多时候是太久不用脑了,反应速度太慢,以至于看完别人的题目才发现。
哦!!!原来是这样,好像挺简单的,但是自己却是想不出来,平时还是要多动动脑子才行。
下面附上 作者 源代码和我的一些注释:
package test2018;
public class Test0202 {
public static void main(String[] args) {
int sum = 0;// 小正方形的个数
/*
* 半径根号2,正方形边长一半作为1,形成等腰直角三角形 算出四分之一的个数,再求总的
*/
int x = (int) Math.floor(1000 / Math.sqrt(2));// 得出三角形的腰的长度,也算出正方形的变长,然后向下取整,即超出的部分不是完整的正方形
// System.out.println("Math.sqrt(2)= "+Math.sqrt(2));
// System.out.println("Math.floor(1000/Math.sqrt(2))=
// "+Math.floor(1000/Math.sqrt(2)));
// System.out.println("x= "+x);
int y = x;// 把x的值赋给y,用x,y作为正方形的边长
// int count = 0;
while (y >= 1) {
if (x * x + y * y <= 1000000 && (x + 1) * (x + 1) + y * y > 1000000) {// 直角三角形的直角两边的平方等于斜边边长
sum += x;
y--;
} else {
x++;
}
// count++;
}
// System.out.println(x);
// System.out.println(y);
// System.out.println("count= "+count);
int r = (int) Math.floor(1000 / Math.sqrt(2));// 和上面的x值一样,这里用来求出正方形的面积
sum = sum + sum - r * r;// 通过下图可以看明白
System.out.println("共有" + sum * 4 + "个正方形");// 最后结果乘4
}
}
通过图片就可以比较清楚的看到x 和y 的变化了。
其他题目:
如有疑惑请留言哦,谢谢。