문제
https://codeforces.com/problemset/problem/1492/A
걸린 시간
00 : 29 : 15
풀이
C++
#include <bits/stdc++.h>
#define INF 1e18;
#define all(c) c.begin(), c.end()
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int tc;
cin >> tc;
while(tc--){
ll p;
ll swimmers[3];
cin >> p;
for(auto& i : swimmers) cin >> i;
ll ans = INF;
for(ll i : swimmers){
if(p%i == 0) ans = min(ans, i*(p/i)-p);
else ans = min(ans, i*(p/i+1)-p);
}
cout << ans << "\n";
}
return 0;
}
세명이 수영을 하고 있고 각각 왕복에 걸리는 시간은 a, b, c 이다. p초가 지난 이후 세명 중 한명이라도 시작 지점으로 돌아오는 데 까지 걸린 최단 시간을 구하여야 한다.
입력되는 숫자의 크기가 최대 1018 이기 때문에 수식을 작성하여 한번에 구해주어야 한다. p를 a, b, c 로 나눈 몫을 이용하였는데, p초에 정확히 돌아오는 경우와 그렇지 않은 경우를 구분해 줄 필요가 있다.
'Codeforces' 카테고리의 다른 글
Codeforces #1487A Arena (0) | 2021.02.28 |
---|---|
Codeforces #1490A Dense Array (0) | 2021.02.28 |
Codeforces #1420A Cubes Sorting (0) | 2020.09.25 |
Codeforces #1419B Stairs (0) | 2020.09.24 |
Codeforces 1419D2 Saga's Birthday (hard version) (0) | 2020.09.21 |
댓글