首页 > 试题广场 >

数字序列第n位的值

[编程题]数字序列第n位的值
  • 热度指数:8607 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个无限长的数字序列1,2,2,3,3,3,4,4,4,4,5,5,5,5,5。。。(数字序列从1开始递增,且数字k在该序列中正好出现k次),求第n项是多少

数据范围:

输入描述:
输入为一个整数n


输出描述:
输出一个整数,即第n项的值
示例1

输入

4

输出

3

备注:
如:输入为3,有序数列第3项的值为2,则输出为2
n = int(input())
for i in range(1, n+1):
    n = n - i
    if n <= 0:
        print(i)
        break

编辑于 2020-05-03 22:30:10 回复(0)
import math
print(math.ceil((math.sqrt(8*int(input())+1)-1)/2))


利用等差数列求和的公式反推(解一元二次方程),python一行代码直接解决
发表于 2020-04-22 16:13:21 回复(0)
class sequence:
    def nums(self):
        n = int(input())
        i = 1
        while n > 0:
            n -= i
            i += 1
        return i - 1
if __name__ == "__main__":
    n = sequence()
    print(n.nums())

发表于 2019-10-30 16:22:22 回复(0)
num = int(input())
s=1
while s:
    h1 =s*(s+1)/2
    if num-h1>0:
        s += 1
    else:
        print(s)
        break
从1开始取每组末尾搜就完事了。
或者更加简单粗暴的
import math
num  = int(input())
print(math.ceil((math.sqrt(1+8*num)-1)/2))



编辑于 2019-09-16 13:28:30 回复(0)

N = int(input())
sum_ = 0
i = 0
while True:
    i += 1
    sum_ = i + sum_
    if N <= sum_:
        num = i
        break
print(num)
发表于 2019-09-12 14:18:27 回复(0)
n = int(input())
k = 1
while (k+1)*k/2 < n:
    k += 1
print(k)

发表于 2019-09-07 09:38:10 回复(0)
n = int(input())
i = 0
while (n>0):
    i += 1
    n = n - i
print(i)

发表于 2019-08-26 15:44:11 回复(0)
"""
有规律的序列问题
"""
import sys
import math

if __name__ == "__main__":
    # sys.stdin = open("input.txt", "r")
    n = int(input().strip())
    t = int(math.sqrt(2 * n))
    while t * (t + 1) >> 1 < n:
        t += 1
    print(t)

发表于 2019-07-10 13:24:03 回复(0)