题意:中文题,不解释
思路:直接解方程就可以了。设电梯一次上升a,一次下降b,总共按按钮n次,设按上升按钮按了x次,则最后电梯的位置是a*x-b*(n-x),求满足该式的最小正数值即可。总共有2000个电梯,枚举每个电梯,找最小值即可。
ac代码:
#include <iostream>
#include <cstdio>
#include <string.h>
using namespace std;
struct house{
int up,down;
}hh[2012];
int fun(int x,int y,int n){
int num = (y*n) / (x+y);
int mod = (y*n) % (x+y);
if(mod == 0){
return x+y;
}
else{
int ans = (num+1) * (x+y) - (y*n);
return ans;
}
}
int main(){
int n,m;
while(~scanf("%d%d",&n,&m)){
int x;
int ans = 100000000;
for(int i = 0;i < m;++i){
scanf("%d%d",&hh[i].up,&hh[i].down);
x = fun(hh[i].up,hh[i].down,n);
if(x<ans)
ans = x;
}
printf("%d\n",ans);
}
return 0;
}