站外题求条
  • 板块学术版
  • 楼主11514zbs
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/23 10:57
  • 上次更新2024/7/23 11:45:52
查看原帖
站外题求条
1125106
11514zbs楼主2024/7/23 10:57

小明要赶火车,他在t时刻来到车站。 车站有n辆火车,每辆火车有一个 到站时间A[i] 和每一班车的时间间隔B[i],(就是说 A[i], A[i]+B[i] ,A[i]+B[i]+B[i],A[i]+… 时刻这辆火车会出现在车站) 小明到车站后开始等车,他会坐上第一辆来的车,如果同一时刻有很多车来,那他可以随便选一个。 请帮他计算他会坐上哪辆车。很多车同一时刻来的话,你可以随便输出一个。

输入 第一行两个整数 n 和 t (1<=n<=100, 1<=t<=10^5) 接下来n行,每行两个整数 A[i]和B[i] 如上所述 (1<=A[i],B[i]<=10^5)

输出 输出坐上的车的编号

样例 样例1: 输入 2 2 6 4 9 5

输出 1

样例2: 输入 5 5 3 3 2 5 5 6 4 9 6 1

输出 3

样例3: 输入 3 7 2 2 2 3 2 4

输出 1

Note 第一个样例中,第一辆车的第一班6点来了,第二辆车的第一班9点来了,所以答案是1,第一辆车。

#include <cstdio>
unsigned long long a, b, min = 1e9 + 7, m, mim = 1, n, t;
int main()
{
	scanf("%llu %llu", &n, &t);
	for (unsigned long long i = 1; i <= n; i++)
	{
		scanf("%llu %llu", &a, &b);
		if (a >= t)
		{
			m = a - t;
		}
		else
		{
			m = b - ((t - a) % b);
		}
		if (m <= min)
		{
			min = m;
			mim = i;
		}
	}
	printf("%llu\n", mim);
	return 0;
}

2024/7/23 10:57
加载中...