题目
思路
这次的斐波那契数列不太一样,它输入的数值会很大,远远超过long long的取值范围。所以我们要在滚动数组的同时处理这些数。
注意1e9类的数在底层中是以浮点数存储的,所以最后要用int转一下。
AC代码
C++
class Solution {
public:
int fib(int n) {
if(n==0) return 0;
double q=0,res=1,temp=0;
for(int i=2;i<=n;++i){
if(res>1e9+7) res-=1e9+7;
temp=res;
res+=q;
if(res>1e9+7) res-=1e9+7;
q=temp;
}
return (int) res;
}
};
python
class Solution:
def fib(self, n: int) -> int:
if(n==0 or n==1 ): return n
q,res,temp=0,1,0
for i in range(2,n+1):
if res>1e9+7: res-=1e9+7
temp=res
res+=q
if res>1e9+7 : res-=1e9+7
q=temp
return int(res)