vector<int> add(vector<int>& a, vector<int>& b){ int t = 0; vector<int> c; for (int i = 0; i < a.size() || i < b.size(); i++) { if (i < a.size()) t += a[i]; if (i < b.size()) t += b[i]; c.push_back(t % 10); t /= 10; } if (t) c.push_back(t); return c; }
intmain(){ int n; cin >> n; if (n <= 2) { cout << n << endl; return0; }
vector<int> f1 = {1}, f2 = {2}, f3; for (int i = 3; i <= n; i++) { // 斐波那契式递推,滚动数组 f3 = add(f1, f2); f1 = f2; f2 = f3; } for (int i = f2.size() - 1; i >= 0; i--) cout << f2[i]; cout << endl; return0; }