30分求调
查看原帖
30分求调
1047550
likejie楼主2025/8/2 08:25
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+20;
long long n;
string s[N];
string add(string a, string b) {
	reverse(a.begin(), a.end());
	reverse(b.begin(), b.end());
	string c = "";
	int num = 0;
	int len = max(a.size(), b.size());
	for (int i = 0; i < len; i++) {
		int num1 = (i < a.size()) ? (a[i] - '0') : 0;
		int num2 = (i < b.size()) ? (b[i] - '0') : 0;
		int sum = num1 + num2 + num;
		num = sum / 10;
		c += ('0' + (sum % 10));
	}
	if (num) c += ('0' + num);
	reverse(c.begin(), c.end());
	return c;
}
int main() {
	cin >> n;
	int num = n * (n + 1) / 2;
	if (num >= 1) s[0] = "1";
	if (num >= 2) s[1] = "1";
	for (int i = 2; i < num; i++) s[i] = add(s[i - 1], s[i - 2]);
    cout<<s[n-1];
	return 0;
}
2025/8/2 08:25
加载中...