랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.
일직선으로 놓여진 개의 화분에 캣닢이 하나씩 심어져 있다.
각 화분은 초기에 만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.
- 랑이 집사가 연속된 개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 만큼씩 증가한다.
- 모든 화분의 수분이 1씩 감소한다.
- 수분이 0이 된 화분에 있는 캣닢은 죽는다.
모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.
input | output |
---|---|
6 3 2 2 | 5 |
2 2 1 1 | 3 |
1. k의 수분을 담은 n개의 화분 리스트 생성
2. while 수분이 0인 화분이 없을 때까지:
3. day += 1
4. start_index = end_index(마지막에 물을 준 화분)
5. end_index = end_index + a
6. for p in pot:
7. 물을 준 화분의 수분 += (b-1) - 인덱스 내의 화분
8. 물을 안 준 화분의 수분 -= 1
9. return day
# 입력
n, k, a, b = map(int, input().split())
pot = [k] * n
e, cnt = 0, 0
while 0 not in pot:
cnt += 1
s, e = e, e+a
idx = [i%n for i in range(s,e)] # 물을 줄 화분 인덱스
pot = [p+b-1 if i%n in idx else p-1 for i, p in enumerate(pot)] # 수분 갱신
# 출력
print(cnt)
# 입력
N,K,A,B = map(int,input().split())
a=0
while-~a*N//A<=K+a*B:
a+=1
#출력
print(K+a*B)