优雅的点

 
    题目:小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。
    小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小
    易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
    例如:半径的平方如果为25
    优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。
    输入描述:输入为一个整数,即为圆半径的平方,范围在32位int范围内。
    输出描述:输出为一个整数,即为优雅的点的个数;以及优雅点的坐标
import numpy as np
rsquare=input("输入半径的平方:")
rsquare=int(rsquare)
r=int(np.sqrt(rsquare))
#初始化坐标以及计算勾股定理
coordinate=[(i,j) for i in range(-r,r+1) for j in range(-r,r+1)]
coordinate1=[i*i+j*j for i in range(-r,r+1) for j in range(-r,r+1)]
count,List=0,[]
for i in range(len(coordinate1)):
    if rsquare == coordinate1[i]:
        List.append(coordinate[i])
        count+=1
print("优雅点个数:",count)
print("优雅点坐标:",List)

    在优雅点计算中,可以理解成三角形勾股定理(a^2+b^2=c^2),存在一条边为0的情况,如果输入的边的长度满足勾股定理且边不存在0的情况,那么他至少有12个优雅点。如果在满足勾股定理,且有一条边为0,那么就是N平方形式,他的优雅点个数为4。如果有多个不同的a^2+b^2=c^2,那么存在优雅点个数在4的基础上多一个就多8个优雅点。

    以10000为输入测试运行如图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值