AT2140题解
思路
这道题翻译有问题,不过楼上已经说了正确的翻译,所以这里就不再赘述了。
显然,要使票数总和最小,肯定先要两个人的得票数最小。所以我们可以设两个变量
先把
接着比较
最后的答案即
代码
#include<bits/stdc++.h>
using namespace std;
long long n,t[1005],a[1005];
long long ceilll(long long u,long long v){//计算向上取整
return (u-1)/v+1;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>t[i]>>a[i];
long long u=t[1],v=a[1];//先赋值为两人第一次的得票数
for(int i=2;i<=n;i++){
u=t[i]*ceilll(u,t[i]);v=a[i]*ceilll(v,a[i]);//把 u 和 v 分别变成大于它们的最小的 t[i] 和 a[i] 的倍数
if(u/t[i]<v/a[i]) u=v/a[i]*t[i];
else v=u/t[i]*a[i];
}
cout<<(u+v)<<endl;
}