第五题可ac: ```
#include<iostream> #include<unordered_map>
#include<map> #include<vector> using namespace std; #define BOUND 998244353 struct Solution{ vector<vector<int>> mem; int MAX, m, rs; int dfs(int pos,int base){ if(mem[pos][base]!=-1){ return mem[pos][base]; } mem[pos][base] = 0; int i = 1; if(pos==1){ int count = MAX / base; mem[pos][base] += count; mem[pos][base] %= BOUND; return mem[pos][base]; } while(base*i<=MAX){ mem[pos][base]+=dfs( pos - 1, base * i); mem[pos][base] %= BOUND; i++; } return mem[pos][base]; } Solution(int MAX,int m,int rs):MAX(MAX),m(m),rs(rs){ mem = vector<vector<int>>(m + 1, vector<int>(MAX + 1, -1)); } }; int main(){ int n, m; cin >> n>>m; Solution s(n, m, 0); cout << s.dfs(m, 1); } ```