如题
#include <iostream>
#include <cstring>
using namespace std;
struct Bignum {
int len, a[110];
Bignum(int x = 0) {
memset(a, 0, sizeof(a));
for (len = 1; x; len++)
a[len] = x % 10, x /= 10;
len--;
}
void setValue(int n) {
for (len = 1; n; len++)
a[len] = n % 10, n /= 10;
len--;
}
void print() {
if (len == 0) {
cout << "0" << endl;
return ;
}
for (int i = len; i >= 1; --i)
cout << a[i];
cout << endl;
}
};
Bignum operator+(Bignum num1, Bignum num) {
Bignum ans;
ans.len = max(num1.len, num.len);
for(int i = 1; i <= ans.len; ++i) {
ans.a[i] += num1.a[i] + num.a[i];
if (ans.a[i] >= 10) {
ans.a[i] -= 10;
ans.a[i + 1]++;
}
}
if (ans.a[ans.len + 1] != 0)
ans.len++;
return ans;
}
Bignum f[1010];
int main() {
int m, n;
cin >> m >> n;
f[m].setValue(1);
f[m + 1].setValue(1);
for (int i = m + 2; i <= n; ++i) {
f[i] = f[i - 1] + f[i - 2];
}
f[n].print();
return 0;
}