#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; }
坑到我了,题解以后再写吧