#include <iostream>
#include <vector>
using namespace std;
const long long MOD = 998244353;
long long climb_dp(int n) {
if (n == 0) return 0; // 处理特殊情况
vector<long long> dp(n + 1); // 爬i层台阶有dp[i]种方式
dp[1] = 1;
if(n>=2) dp[2]=2;
for (int i = 3; i <= n; i++) {
dp[i] = (dp[i-1] + dp[i-2]) % MOD;//每次都要取模!否则溢出。模运算具有分配律
}
return dp[n] % MOD;
}
int main() {
int n;
cin >> n;
cout << climb_dp(n) << endl;
return 0;
}
坑到我了,题解以后再写吧

京公网安备 11010502036488号