n개의 물병이 있다고 가정하면 m개의 빈 물병을 하나의 물병으로 교환할 수 있습니다. 이제 물을 가득 채우면 빈 병이 됩니다. 마실 수 있는 물병의 최대 개수를 찾아야 합니다.
따라서 입력이 n =9, m =3과 같으면 처음에는 9개의 병이 있으므로 출력은 13이 됩니다. 따라서 모든 병을 마신 후에는 9/3 =3개의 가득 찬 병을 얻을 수 있습니다. 빈 병 3개가 있고 그걸로 하나 사서 마실 수 있어서 9 + 3 + 1 =13병을 완성했습니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
x:=n, s:=0, k:=0
-
동안 x>=m, 수행
-
k:=x 모드 m
-
x:=x / m의 몫
-
s:=s + x
-
x:=x + k
-
-
n + s를 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(n, m): x=n s=0 k=0 while x >= m: k=x % m x=x // m s=s + x x=x + k return n + s n = 9 m = 3 print(solve(n, m))
입력
9, 3
출력
13