'''
[编程题] 优雅的点
时间限制:1秒
空间限制:32768K
小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,
小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。
例如:半径的平方如果为25
优雅的点就有:(+/-3, +/-4), (+/-4, +/-3), (0, +/-5) (+/-5, 0),一共12个点。
输入描述:
输入为一个整数,即为圆半径的平方,范围在32位int范围内。
输出描述:
输出为一个整数,即为优雅的点的个数
输入例子1:
25
输出例子1:
12
'''
'''
解题思路:仔细小心
思路不难,如何最高效率的算出所有优雅的点不遗落不重复是难点
将半径的平方和整除2并开发作为搜索的范围
从0开始遍历范围内的所有整数,把这个整数作为x坐标,利用半径平方和求出y的坐标判断其是否为整数
若为整数则该x和y构成的点是优雅的,放入results列表
遍历完成后,开始遍历results列表,利用圆的对称性:
如果里面记录的点中xy坐标有一个是0,则计数+4,若xy坐标相等,计数加4,否则计数+8
输出计数
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''
import math
r_square = int(input())
cord_range = int(math.sqrt(r_square//2))
results = []
for x in range(cord_range+1):
y = math.sqrt(r_square - x ** 2)
if y == int(y):
results.append((x, y))
count = 0
for each in results:
if each[0] == 0 or each[1] == 0:
count += 4
elif each[0] == each[1]:
count += 4
else:
count += 8
print(count)