Codeforces Round #704 (Div. 2) A. 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值