algorithm

더블릿|dovelet - 2번째 계단 - up and down/up_down

블루건 2016. 7. 29. 16:57

문제 


프로그램 명: up_down
제한시간: 1 초

Nikky 와 Byron 체육시간에 게임을 하고 있다.

선생님이 Nikky 에게는 a 보 전진 후에 b 보 후퇴하게 , Byron 에게는 c 보 전진 후 d 보 후퇴하는 작업을 반복적으로 하게 했다.

둘은 같은 보폭을 가지고 한 보폭당 걸리는 시간이 같다.

s 스텝 이후 선생님이 휘슬을 분 경우 둘 중 누가 처음 위치보다 멀리 가 있는가를 알아내는 프로그램을 하라.

입력

5 개의 정수 a,b,c,d,s 가 주어진다.

단, a,b,c,d 는 100 이하의 정수이고 a > b , c > d 이고 s 는 10000 이하의 정수이다.

출력

세 가지 중 하나를 출력한다.

  • Nikky
  • Byron
  • Tied

입출력 예

입력

4
2
5
3
12

출력

Byron

입출력 보충

Nikky 는 12 스텝 후의 상태는 4 - 2 + 4 - 2 즉 첫 위치에서 4 스텝 만큼 떨어지고 Byron 는 5 - 3 + 4 즉 6 스텝 떨어져서 Byron 이 더 멀리 떨어져 있다.

출처:uwaterloo junior
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
 
using namespace std;
 
int main()
{
    int a, b, c, d, s;
    cin >> a >> b >> c >> d >> s;
 
    int nikkyStep = 0, nikkySum = 0, byronStep = 0, byronSum = 0;
 
    bool nikkyPlus = true, byronPlus = true;
    
    for (int i = 0; i < s; i++)
    {
        nikkyStep++;
        
        if (nikkyStep > a)
            nikkyPlus = false;
 
        if (nikkyPlus)
            nikkySum++;
        else
            nikkySum--;
 
        if (nikkyStep == a + b)
        {
            nikkyStep = 0;
            nikkyPlus = true;
        }
 
        byronStep++;
 
        if (byronStep > c)
            byronPlus = false;
 
        if (byronPlus)
            byronSum++;
        else
            byronSum--;
 
        if (byronStep == c + d)
        {
            byronStep = 0;
            byronPlus = true;
        }
    }
    
    if (nikkySum > byronSum)
        cout << "Nikky";
    else if (nikkySum < byronSum)
        cout << "Byron";
    else
        cout << "Tied";
 
    return 0;
}
 
cs