第一题补充一个递归 #include<iostream> #include<vector> #include<algorithm> #include<map> using namespace std; int min_cost(int n, int m, int a, int b, map<pair<int, int>, int> &mp){     if(m % n == 0)  return 0;     pair<int, int> curr = make_pair(n, m);     if(mp.find(curr) != mp.end())  return mp[curr];     int cost = min(a + min_cost(n - 1, m, a, b, mp), b + min_cost(n, m + 1, a, b, mp));     mp[make_pair(n, m)] = cost;     return cost; } int main(){     int n, m, a, b;     while(cin >> n >> m >> a >> b){         map<pair<int, int>, int> mp;         cout << min_cost(n, m, a, b, mp) << endl;     }     return 0; }