달팽이

시간 제한1초메모리 제한128 MB

요약
달팽이가 매일 조금씩 덜 기어오르고 밤마다 일정 거리 미끄러질 때, 탈출과 추락 중 무엇이 먼저 일어나는지 알아낸다.
난이도

쉬움10점 중 3점

유형
구현, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

달팽이 한 마리가 깊이 HH피트인 우물 바닥에서 꼭대기로 기어오르려 한다. 낮에 해가 떠 있는 동안 달팽이는 위로 기어오르고, 밤에는 잠을 자며 아래로 미끄러진다.

첫째 날 달팽이는 UU피트를 오른다. 하지만 달팽이는 점점 피로해지므로, 매일 오르는 거리가 조금씩 줄어든다. 구체적으로 nn째 날에 달팽이가 오르는 거리는 U−(n−1)×U×F100U - (n-1)\times U \times \dfrac{F}{100} 피트이다. (피로로 잃는 거리는 항상 첫째 날 거리의 F%F\%이다.) 만약 이 값이 음수가 되면 그날 달팽이는 전혀 오르지 않는다(오른 거리는 0). 낮에 얼마를 올랐든 밤에는 항상 DD피트를 미끄러져 내려간다.

달팽이의 높이가 우물의 높이 HH피트를 처음으로 초과하는 순간 달팽이는 우물을 벗어난다. 반대로 밤에 미끄러진 뒤 높이가 음수가 되면 달팽이는 우물 바닥으로 되돌아가 실패한다. (하루는 낮 시간과 그에 이어지는 밤 시간으로 이루어진다.)

예를 들어 H=6, U=3, D=1, F=10H=6,\ U=3,\ D=1,\ F=10인 경우, 아래 표처럼 달팽이는 셋째 날에 우물을 벗어난다.

날시작 높이오른 거리오른 뒤 높이미끄러진 뒤 높이
10′3′3′2′
22′2.7′4.7′3.7′
33.7′2.4′6.1′–

주어진 매개변수에 따라 달팽이는 결국 우물을 벗어나거나(높이가 HH를 초과) 바닥으로 미끄러진다(높이가 음수가 됨). 둘 중 어느 일이 먼저 일어나는지, 그리고 며칠째에 일어나는지를 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어지며, 각 케이스는 한 줄에 주어진다. 각 줄에는 공백 하나로 구분된 네 정수 H, U, D, FH,\ U,\ D,\ F가 있다.

  • HH: 우물의 높이(피트)
  • UU: 달팽이가 낮 동안 오르는 거리(피트)
  • DD: 달팽이가 밤 동안 미끄러지는 거리(피트)
  • FF: 백분율로 표현한 피로 계수

H=0H = 0인 줄은 입력의 끝을 의미하며 처리하지 않는다. 그 외에는 네 정수 모두 11 이상 100100 이하이다. 달팽이는 결코 음수 거리를 오르지 않는다. 피로 때문에 오르는 거리가 0보다 작아지면 그날은 전혀 오르지 않는다. 그러나 얼마를 올랐든 밤에는 항상 DD피트를 미끄러진다.

출력

각 테스트 케이스마다 한 줄을 출력한다.

달팽이가 우물을 벗어나면(성공) 다음과 같이 출력한다.

success on day <n>

달팽이가 바닥으로 미끄러지면(실패) 다음과 같이 출력한다.

failure on day <n>

여기서 <n>은 해당 사건이 일어난 날의 번호이다.

예제3

  1. 예제 1

    입력
    6 3 1 10
    10 2 1 50
    50 5 3 14
    50 6 4 1
    50 6 3 1
    1 1 1 1
    0 0 0 0
    
    예상 출력
    success on day 3
    failure on day 4
    failure on day 7
    failure on day 68
    success on day 20
    failure on day 2
    
  2. 예제 2

    입력
    2 3 1 10
    0 0 0 0
    
    예상 출력
    success on day 1
    
  3. 예제 3

    입력
    3 3 1 10
    0 0 0 0
    
    예상 출력
    success on day 2