![](https://img-blog.csdn.net/20141108145453660?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja2lseXdt/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int n,m,a,b,min;
while(scanf("%d %d %d %d",&n,&m,&a,&b)!=EOF)
{
int i=2,s=2e9;
while(i<s)
{
min=i+(s-i)/2;
if(n<=(min-min/a)&&m<=(min-min/b)&&n+m<=min-min/(a*b))
s=min;
else i=min+1;
}
printf("%d\n",s);
}
return 0;
}
本题关键的地方就是读懂题目的意思与要求 还有就是要找到中间数 其实就是个二分查找的问题