首页 > 试题广场 >

求数列第n项

[编程题]求数列第n项
  • 热度指数:3804 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
米兔从兔米那里了解到有一个无限长的数字序列 1,  2,3,3,4,4,4,  5,5,5,5,5 ...,(已知此数列有一定规律,现将这些数字按不同数值堆叠,相同值的数字在同一层)。米兔想知道这个数字序列的第n个数所在的那一层之前的所有层里共有多少个数。

输入描述:
n(n<=1e18)


输出描述:
第n个数所在的那一层之前的所有层里共有多少个数
示例1

输入

6

输出

4
def func(n):
    if n <= 1:
        return 0
    a = 0
    b = 1
    counter = 1
    while counter < n:
        #temp = a + b
        #a = b
        #b = temp
        a, b = b, a+b
        counter += b
    return counter - b


input_num = int(input())
print(func(input_num))

发表于 2019-09-06 10:34:12 回复(0)
""""
斐波那契数列
"""

if __name__ == "__main__":
    n = int(input().strip())
    ans = 0
    a, b = 0, 1
    while True:
        if ans + b >= n:
            break
        ans += b
        a, b = b, a + b
    print(ans)

发表于 2019-07-14 12:32:01 回复(0)