动态规划解法
实际上本题可以通过一个一维动态规划直接完成,f[i]
表示当总量为i的时候的方案总数,最后遍历一遍完事
#include <iostream>
using namespace std;
const int N = 2000000;
int n, m;
int f[N];
int main () {
cin >> n >> m;
f[n] = f[m] = 1;
for (int i = min(n, m); i < N; ++i) {
if (i >= n) f[i] += f[i - n];
if (i >= m) f[i] += f[i - m];
}
int maxx = 0;
for (int i = 0; i < N; ++i) {
if (f[i] == 0) maxx = max(i, maxx);
}
cout << maxx;
}