原题链接

题目描述

泰波那契序列 TnT_n 定义如下:

T0=0,T1=1,T2=1T_0 = 0, T_1 = 1, T_2 = 1,且在 n0n \ge 0 的条件下 Tn+3=Tn+Tn+1+Tn+2Tn+3 = T_n + T_n+1 + T_n+2

给你整数 nn,请返回第 nn 个泰波那契数 TnT_n 的值。

数据范围

0<=n<=370 <= n <= 37

答案保证是一个 3232 位整数,即 answer2311answer \le 2^{31} - 1

样例

输入样例1:

n = 4

输出样例1:

4
样例1解释:

T3=0+1+1=2T_3 = 0 + 1 + 1 = 2
T4=1+1+2=4T_4 = 1 + 1 + 2 = 4

输入样例2:

n = 25

输出样例2:

1389537

题意

T0=0,T1=1,T2=1T_0 = 0, T_1 = 1, T_2 = 1。求 Tn(n0)T_n (n \geq 0)Tn=T0+T1+T2(n>2)T_n = T_0 + T_1 + T_2 (n > 2)

思路

n2n \leq 2​ 的时候,直接返回 Tn(T0=0,T1=1,T2=1)T_n (T_0 = 0, T_1 = 1, T_2 = 1),当 n>2n > 2​ 的时候,开4个变量,滚动求解就好。

代码

C++

class Solution {
public:
    int tribonacci(int n) {
        if ( n <= 2 ) return n == 0 ? 0 : 1;
        int a = 0, b = 1, c = 1, d;
        while ( n-- > 2 )
        {
            d = a + b + c;
            a = b, b = c, c = d;
        }
        return d;
    }
};