斐波那契——矩阵快速幂
#include <iostream>
#include <vector>
using namespace std;
typedef vector<vector<long long>> Matrix;//定义一个n阶方阵
Matrix multiply(const Matrix& a, const Matrix& b, long long mod = 1e9 + 7) {
    int n = a.size();//得到a的阶数
    Matrix result(n, vector<long long>(n, 0));//构建一个全为0的n阶方阵
    for (int i = 0; i < n; i++) {//对于result的每一行
        for (int j = 0; j < n; j++) {//result的每一列
            for (int k = 0; k < n; k++) {
                result[i][j] = (result[i][j] + a[i][k] * b[k][j]) % mod;//a的行×b的列
            }
        }
    }
    return result;
}
Matrix matrix_power(Matrix mat, long long power, long long mod = 1e9 + 7) {
    int n = mat.size();
    Matrix result(n, vector<long long>(n, 0));
    for (int i = 0; i < n; i++) {
        result[i][i] = 1;
    }
    while (power > 0) {
        if (power & 1) {
            result = multiply(result, mat);
        }
        mat = multiply(mat, mat, mod);
        power = power / 2;//核心思路:将乘方二进制分解,如果乘方是偶数,就将当前的数直接平方,乘方直接除以二,如果是奇数,直接乘自身,再按照偶数来算
    }
    return result;
}
int main()
{
    // 请在此输入您的代码
    Matrix F = { {1,1},{1,0} };
    long long T;
    cin >> T;
    long long N[1000];
    long long res[1000];
    for (long long i = 0; i < T; i++) {
        cin >> N[i];
        res[i] = matrix_power(F, N[i])[1][0];

    }
    for (long long j = 0; j < T; j++) {
        cout << res[j] << endl;
    }

    return 0;
}

评论

  1. 91admin
    3 天前
    2026-1-04 20:54:56

    太强了 不愧是精通c艹的睾手

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇