n(n<=1e18)
第n个数所在的那一层之前的所有层里共有多少个数
6
4
import java.util.*;
public class Main
{
public static void main(String [] args)
{
Scanner sc=new Scanner(System.in);
while(sc.hasNextLong())
{
long n=sc.nextLong();
long sum=0;
long index=0;//第n个数所处的层数
for(long i=1;;i++)
{
sum+=fib(i);
if(sum>=n)//假如说累加和大于等于n了,说明此时的i就是第n个数所处的行数
{
index=i;
break;
}
}
long before=index-1;
long s=0;
for(long i=1;i<=before;i++)
{
s+=fib(i);
}
System.out.println(s);
}
}
private static long fib(long n)//斐波那契函数
{
long a=1;
long b=1;
for(long i=1;i<n-1;i++)
{
b=a+b;
a=b-a;
}
return b;
}
}