题解 | #斐波那契数列#

斐波那契数列

https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3

typedef struct _Matrix{
    int a, b, c, d;
}Matrix;

Matrix matrix_mutiply(Matrix &x, Matrix &y){
    Matrix z;
    z.a = x.a * y.a + x.b * y.c;
    z.b = x.a * y.b + x.b * y.d;
    z.c = x.c * y.a + x.d * y.c;
    z.d = x.c * y.b + x.d * y.d;
    return z;  
}

Matrix quick_matrix_pow(Matrix &x, int n){
    Matrix ans{1, 0, 0, 1};
    while(n){
        if(n & 1) ans =matrix_mutiply(ans, x);
        x = matrix_mutiply(x, x);
        n >>= 1;
    }
    return ans;
}

class Solution {
public:
    int Fibonacci(int n) {
        Matrix x{1, 1, 1, 0};
        Matrix ans = quick_matrix_pow(x, n - 1);
        return ans.a;
    }
};

#快速幂#
全部评论
具体原理可以参考这篇博客:https://blog.csdn.net/flyfish1986/article/details/48014523 此时不再赘述。
点赞 回复 分享
发布于 2023-02-10 23:57 广东

相关推荐

Jcwemz:中软证书写单行,考了什么学了什么相关技术栈的内容就说自己会什么, 没实习就包装实习简历,将项目经历写成实习做的,项目时间拉长,项目成果具体化,测试的项目成果无非就是写了多少用例查出了多少bug,重要的不是实习了多久,而是你会多少东西,你能表达的就都是你的。 cet4,随便找个地方标上就好了,不用写单行。 粗略建议,我也不在行,觉得对的可以采纳
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务