这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
你好呀,我是灰小猿,一个超会写bug的程序猿!
欢迎大家关注我的专栏“每日蓝桥”,该专栏的主要作用是和大家分享近几年蓝桥杯省赛及决赛等真题,解析其中存在的算法思想、数据结构等内容,帮助大家学习到更多的知识和技术!
标题:方格计数
解题思路:
本题在求解时我们应该知道,半径为1000,则说明半径上无论是横坐标还是纵坐标,在某一个象限上顶点的坐标一定是小于等于1000的,那么我们就可以例举出每一个顶点的横纵坐标,计算出它的斜边长的平方,一定是小于等于1000*1000的,这样我们就可以算出一个象限上完整格子的个数,之后乘以4就可以得到最终答案。
易错点:
其中在这一道题中比较容易出错的一个地方是,万望各位会有小伙伴们按照传统的思想去将整个圆形的半径或直径直接拿去计算,然后根据对称原则对计算出二分之一部分的方格数或者四分之一的方格数,然后再乘以相应的倍数来求解,其实这样的想法是没有错的,但是在对于这一道题来说,这样的解法就行不通了,因为弧形所在范围是不确定的,占用每一个方格的大小也是不确定的,所以并不能据此进行估算
答案源码:
package 一八年省赛真题; public class Year2018_Bt2 { public static void main(String[] args) { int n = 0; for (int x = 1; x <= 1000; x++) { for (int y = 1; y <= 1000; y++) { if (x*x+y*y<=1000000) { n++; } } } System.out.println(n*4); } }
输出样例:
其中有不足或者改进的地方,还希望小伙伴留言提出,一起学习!
感兴趣的小伙伴可以关注专栏!
灰小猿陪你一起进步!