当前位置:   article > 正文

Codeforces Round #704 (Div. 2) A. Three swimmers_code forces three swimmers

code forces three swimmers

原题链接

题目大意:
三位游泳者决定在游泳池里组织一个聚会!中午,他们从游泳池的左侧开始游泳。

第一个游泳者游过整个游泳池并回来正好需要一分钟,第二个游泳者正好需要b分钟,第三个游泳者正好需要c分钟。因此,第一名游泳选手将在0,a,2a,3a,……之后出现在泳池的左侧。开始时间过后几分钟,第二次将在0,b,2b,3b,…。在0,c,2c,3c,……之后,第三个将会在游泳池的左侧。几分钟。

就在他们开始游泳的p分钟后,你来到了游泳池的左侧。确定在其中一名游泳者到达游泳池左侧之前,你必须等待多长时间。

输入格式
输入的第一行包含单个整数t(1≤t≤1000)-测试用例的数量。下一个测试行包含测试用例描述,每行一个。

每条线包含四个整数p,a,b和c(1≤p,a,b,c≤1018),时间以开始后的分钟为单位,当你来到游泳池时,以及游泳者穿过整个游泳池并返回的时间(以分钟为单位)。

输出格式
对于每个测试用例,输出一个整数-在一个游泳者到达游泳池左侧之前,您必须等待多长时间(以分钟为单位)。

Example
input

4
9 5 4 8
2 6 10 9
10 2 5 10
10 9 9 9
output
1
4
0
8


如果有p能被a,b,c整除,则说明已经有个人在左侧,不需要等待
不能被整除的话,在每个人到来的时间中取最小值

AC代码:

#include<bits/stdc++.h>
#define ll long long 
using namespace std;
ll min(ll a,ll b){return a<b?a:b;}
ll min(ll a,ll b,ll c){
	return min(min(a,b),c);
}
int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		ll p,a,b,c;
		scanf("%lld %lld %lld %lld",&p,&a,&b,&c);
		if((p%a)&&(p%b)&&(p%c))printf("%lld\n",min(a-p%a,b-p%b,c-p%c));
		else printf("0\n");
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/54922
推荐阅读
相关标签
  

闽ICP备14008679号