蓝桥杯2018JavaB组第二题求正方形的个数,题解

我自己是没想出来,然后参考这位博主的代码,才了解的这个题目该怎么去做。

想要了解更多可以点击上面的连接,查看原博主的代码哦。

很多时候是太久不用脑了,反应速度太慢,以至于看完别人的题目才发现。

哦!!!原来是这样,好像挺简单的,但是自己却是想不出来,平时还是要多动动脑子才行。

下面附上 作者 源代码和我的一些注释:

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 的变化了。

其他题目:

蓝桥杯2018JavaB组第一题

蓝桥杯2018JavaB组第三题

如有疑惑请留言哦,谢谢。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值