分析
唯一要注意的,最大数不会超过a*b。这题其实简化了输入不存在的情况。
C++
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define ffor(i,s,e) for(int i=s;i<e;i++)
#define out(x) cout<<x<<" "
#define nl cout<<endl
//data
typedef long long LL;
const int N=1000000;
int can[N];//能否被表出
int minN;
int a,b;
//fun
void init(){
scanf("%d%d",&a,&b);
minN=min(a,b);
can[a]=1;
can[b]=1;
}
void setCan(){
ffor(i,minN,N){
if(can[i]) continue;
int res=0;
if(i>b) res+=can[i-b];
if(i>a) res+=can[i-a];
can[i]=(res>0)?1:0;
}
// ffor(i,7,22) if(can[i]) out(i);nl;
}
void getAns(){
int k=minN;
ffor(i,minN,N){
while(can[i]&&k){
k--;
if(k==0){
cout<<i-minN<<endl;
return ;
}
i++;
}
k=minN;
}
}
//Ac flow
void Ac(){
init();
setCan();
getAns();
}
int main(){
// init();
// setCan();
Ac();
return 0;
}