补一个不懂数学的做法,记忆化不记忆化好像都能过 #include <bits/stdc++.h> using namespace std; const int N = 300010, INF = 0x3f3f3f3f; int dp[N]; int dfs(int x) { int &ans = dp[x]; if (x <= 1) { return dp[x]; } if (ans != INF) { return dp[x]; } for (int i = 2; i <= x; i ++) { if (x % i == 0) { ans = min(ans,...