2 条题解

  • 3
    @ 2023-12-13 21:24:39

    找规律可以发现答案是一个有序数列,可以将答案存进数组,用二分查找答案

    • 1
      @ 2023-7-29 16:56:06

      注意到

      a2=b+ca^2=b+c

      代入勾股定理式得

      b+c=c2b2=(cb)(c+b)b+c=c^2-b^2=(c-b)(c+b)

      cb=1c-b=1

      只需要找到所有和为平方数的相邻正整数。这样的平方数必为奇数,这是因为相邻数字的奇偶性互异。且该平方数大于1,因为不存在相邻正整数的和为1。

      换句话来说,任意奇数平方数减一除以二,或加一除以二,就能得到bbcc

      因此对任意的奇数aa,都有c=a2+12nc=\frac{a^2+1}{2}\leq n,则a2n1a\leq \sqrt{2n-1}。又因为aa是奇数,这样的aa一共有

      2n112\frac{\left\lfloor\sqrt{2n-1}\right\rfloor-1}{2}

      个。 故程序显然如下所示:

      import math
      t = int(input())
      for _ in range(t):
          n = int(input())
          print((math.floor((2 * n - 1) ** 0.5) - 1) // 2)
      
      • 1

      信息

      ID
      778
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      递交数
      188
      已通过
      32
      上传者