80分,蒟蒻求助
查看原帖
80分,蒟蒻求助
565669
Marrelia楼主2022/9/10 23:37

如题

#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;
}
2022/9/10 23:37
加载中...