根据最后一个使用的糖果作为划分依据,可以划分出不重不漏的两个子集
- 使用糖果1
- 使用糖果2
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e7+10;
bool dp[N];
int a[N];
int main()
{
for(int i=1;i<=2;i++)
cin>>a[i];
dp[0]=true;
for(int i=0;i<N;i++)
{
if(i>=a[1])
dp[i]|=dp[i-a[1]];
if(i>=a[2])
dp[i]|=dp[i-a[2]];
}
int v=-1;
for(int i=N-1;i>=0;i--)
if(!dp[i])
{
v=i;break;
}
cout<<v;
}