您当前的位置: 首页 >  Java

梁同学与Android

暂无认证

  • 6浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

第九届蓝桥杯java B组—第二题方格计数(详细介绍)

梁同学与Android 发布时间:2019-08-07 13:48:05 ,浏览量:6

文章目录
    • 1.题目如下
    • 2.解题思路
    • 3.详细讲解
    • 4.代码实例
    • 5.答案
最近正在练习蓝桥杯的习题,做到第九届篮球杯的第二题(方格计数)的时候,发现没有思路,就上网上查了一些资料,感觉说的不够详细,可能也是大佬们都已经懂了,有些东西没必要说,今天小编在这里讲解一下自己的思路:

1.题目如下

如图p1.png所示,在二维平面上有无数个1x1的小方格。 我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。 你能计算出这个圆里有多少个完整的小方格吗? 注意:需要提交的是一个整数,不要填写任何多余内容。 在这里插入图片描述

2.解题思路

我们只看第一象限,圆心为坐标原点,一共四个象限,计算出一个象限的所有完整方格×4即可、在第一象限里面,以x轴递增的是i,以y轴递增的是j,我们找一个离圆点最近的小正方形(1×1)为例,利用勾股定理:对角线²=长²+宽²,可知道对角线长度的平方,那我们就可以利用每个正方形或者长方形从圆点到右上角距离(就是对角线)的平方跟1000×1000(r²)相比就行,只要比r²小的或者等于r²的,就是在范围之内了

3.详细讲解

如下如所示: 在这里插入图片描述 我们紫色区域的半径为3的正方形,以x轴递增的是i,以y轴递增的是j,两个长方形所在的黄线他们的长度的平方分别为,短黄线:2²+1²=5,长黄线:3²+2²=13。再跟r²=3²=9相比较59,即长黄线不在范围内,短黄线在范围之内。

4.代码实例
public class Lanqiao {
    	public static void main(String[] args) {
    		//这里定义一个计数器count,用来记录最终结果
    		int count = 0;
    		//题目要求的半径为1000的圆
    		int rr = 1000*1000;
    		//这里的1就代表第一个方格以此类推1000就代表第1000个方格
    		for(int i=1;i            
关注
打赏
1660730345
查看更多评论
0.1739s