诗人???
2025-11-16 14:45:14
发布于:上海
2阅读
0回复
0点赞
这题诗人???
用ai写的,数字太大了不能正常算
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const long long MOD = 1000000007;
// 定义2x2矩阵
struct Matrix {
long long data[2][2];
Matrix() {
data[0][0] = data[1][1] = 1;
data[0][1] = data[1][0] = 0;
}
Matrix(long long a, long long b, long long c, long long d) {
data[0][0] = a;
data[0][1] = b;
data[1][0] = c;
data[1][1] = d;
}
};
// 矩阵乘法
Matrix multiply(const Matrix& a, const Matrix& b) {
Matrix result;
result.data[0][0] = (a.data[0][0] * b.data[0][0] + a.data[0][1] * b.data[1][0]) % MOD;
result.data[0][1] = (a.data[0][0] * b.data[0][1] + a.data[0][1] * b.data[1][1]) % MOD;
result.data[1][0] = (a.data[1][0] * b.data[0][0] + a.data[1][1] * b.data[1][0]) % MOD;
result.data[1][1] = (a.data[1][0] * b.data[0][1] + a.data[1][1] * b.data[1][1]) % MOD;
return result;
}
// 矩阵快速幂
Matrix matrixPower(Matrix base, long long exponent) {
Matrix result;
while (exponent > 0) {
if (exponent & 1) {
result = multiply(result, base);
}
base = multiply(base, base);
exponent >>= 1;
}
return result;
}
// 计算斐波那契数列第n项模MOD
long long fibonacci(long long n) {
if (n <= 2) return 1;
Matrix base(1, 1, 1, 0);
Matrix result = matrixPower(base, n - 1);
return result.data[0][0];
}
int main() {
long long n;
cin >> n;
long long result = fibonacci(n);
cout << result << endl;
return 0;
}
这里空空如也

有帮助,赞一个