1648 - Business Center

本文介绍了一种通过计算电梯上升次数来确定特定楼层编号的方法。针对不同速度的电梯,通过数学公式计算得出最少可达楼层。代码实现了输入电梯的上升和下降速度后,计算并输出最小可达楼层编号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较简单的一道题目,最底层的楼层编号为0,假设对于某个电梯而言,上升了x次,那么就肯定下降了n-x次,所以有x*u-(n-x)*d>=0,解出x=(n*d)/(u+d),注意对于nd可以整除u+d的情况要特殊考虑,因为不能停留在0层,所以只能多上u层少下d层,所以此时的编号为u+d,其他的具体实现见如下代码:

#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
#include<functional>
using namespace std;

int n, m;

int main(){
	while (cin >> n >> m){
		int u, d;
		int ans = 1 << 20;
		for (int i = 1; i <= m; i++){
			cin >> u >> d;
			if ((n*d) % (u + d) == 0){
				ans = min(ans, u + d);
			}
			else{
				int x = (n*d) / (u + d) + 1;
				int cur = x*u - (n - x)*d;
				ans = min(ans, cur);
			}
		}
		cout << ans << endl;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值