Codeforces

Codeforces #1492A Three swimmers

ppwag 2021. 2. 28. 00:48

문제

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

댓글