2 条题解
- 1
信息
- ID
- 778
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 188
- 已通过
- 32
- 上传者
注意到
a2=b+c代入勾股定理式得
b+c=c2−b2=(c−b)(c+b)即
c−b=1只需要找到所有和为平方数的相邻正整数。这样的平方数必为奇数,这是因为相邻数字的奇偶性互异。且该平方数大于1,因为不存在相邻正整数的和为1。
换句话来说,任意奇数平方数减一除以二,或加一除以二,就能得到b或c。
因此对任意的奇数a,都有c=2a2+1≤n,则a≤2n−1。又因为a是奇数,这样的a一共有
2⌊2n−1⌋−1个。 故程序显然如下所示:
import math
t = int(input())
for _ in range(t):
n = int(input())
print((math.floor((2 * n - 1) ** 0.5) - 1) // 2)