百度之星资格赛 J题 百度的新大厦
2012-05-29 15:24 javaspring 阅读(200) 评论(0) 编辑 收藏 举报题意:中文题,不解释
思路:直接解方程就可以了。设电梯一次上升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; }