社区讨论

50分求调

P1255数楼梯参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@mkjqvi8c
此快照首次捕获于
2026/01/18 21:00
2 个月前
此快照最后确认于
2026/01/22 17:25
2 个月前
查看原帖
CPP
#include<iostream>
#include<ostream>
#include<cstring>
using namespace std;
struct Bigint {
    int len, val[1667];
	Bigint(int x = 0) {
	    memset(this->val, 0, sizeof this->val);
	    for (this->len = 1; x; this->len++) {
	        this->val[this->len] = x % 10;
	        x /= 10;
	    }
	    this->len--;
	}
	int& operator[](int index) {return val[index];}
	Bigint operator+(Bigint& other) {
	   	Bigint result;
	   	memset(result.val, 0, sizeof result.val);
	   	for (int i = 1; i <= max(this->len, other.len); i++)
	   		result[i] += (*this)[i] + other[i];
	   	for (int i = 1; i <= max(this->len, other.len); i++) {
	   		result[i] += result[i - 1] / 10;
	   		result[i - 1] %= 10;
	   		if (result[i]) result.len = i;
		}
		return result;
	}
} f[5010];
ostream& operator<<(ostream& os, const Bigint num) {
	for (int i = num.len; i >= 1; i--) os << num.val[i];
	return os;
}
int main() {
	int n; cin >> n;
	f[1] = 1, f[2] = 2;
	for (int i = 3; i <= n; i++) f[i] = f[i - 1] + f[i - 2];
	cout << f[n] << endl;
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...