题目:小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。
小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小
易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
例如:半径的平方如果为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为输入测试运行如图: