首页 > 试题广场 >

求数列第n项

[编程题]求数列第n项
  • 热度指数:3734 时间限制: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
package main

import (
    "fmt"
)

func main() {
    var n int
    fmt.Scan(&n)
    if n<=2{
        fmt.Print(n-1)
        return
    }
    a,b,c:=0,1,1
    sum:=2
    for i:=3;;i++{
        a=b
        b=c
        c=a+b
        sum+=c
        if sum>=n{
            fmt.Print(sum-c)
            break
        }
    }
}

发表于 2023-03-23 10:15:37 回复(0)