Python蓝桥杯之方格记数

题目

如图所示,在二维平面上有无数个1x1的小方格。

我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。

你能计算出这个圆里有多少个完整的小方格吗?

利用勾股定理解题,先画出下图找出规律: 

 我们利用每个完整方格距圆心最远点是否小于半径来判断方格是否完整存在于圆内,只用分析第一象限,最后直接乘4就行了。要计算的点就是上图蓝色圈起来的点,为什么坐标轴上的点不全,是因为其不是方格距圆心的最远点。根据勾股定理:a*a + b*b = c*c,所以我们可以列出 if  的判断条件。

代码如下:

r = 1000 # 半径为1000
count = 0 # 用来记方格数
for j in range(1, 1001): # 横坐标
    for k in range(1, 1001): # 纵坐标
        if j*j + k*k <= r*r: # 根据勾股定理所列的方程
            count += 1 # 满足条件方格数加一
print(count*4) # 最后再*4 即为四个象限方格的总数

结果如下:

 当然我们也可以直接吧四个象限一起来算:

r = 1000
count = 0
for j in range(-1000, 1001):
    for k in range(-1000, 1001):
        if j*j + k*k <= r*r and j != 0 and k != 0:
            count += 1
print(count)

这里我们要注意的是要从-1000到1001 还要加上 j和k  !=0的条件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

My_YueR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值