Link:
C:
每次判断增加a/b哪个合法即可
并不用判断两个都合法时哪个更优,因为此时两者答案必定相同
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll n,a,b,x,y; int main() { scanf("%lld%lld%lld",&n,&a,&b); for(int i=1;i<=n-1;i++) { scanf("%lld%lld",&x,&y); ll a1=((a-1)/x+1)*x,b1=a1/x*y; ll b2=((b-1)/y+1)*y,a2=b2/y*x; if(a1>=a&&b1>=b) a=a1,b=b1; else a=a2,b=b2; } printf("%lld",a+b); return 0; }