Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 마실 수 있는 물병의 최대 개수를 찾는 프로그램

<시간/>

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