Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++의 맥주병


하나의 숫자 n이 있다고 가정합니다. 여기서 n은 n개의 가득 찬 맥주병을 나타냅니다. 빈 맥주병 3병을 가득 찬 맥주 1병으로 바꿀 수 있다면 우리가 마실 수 있는 맥주병의 수를 찾아야 합니다.

따라서 입력이 10과 같으면 출력은 14가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • solve() 함수를 정의하면 n이 필요합니다.

  • ret :=0

  • n>=3인 동안 −

    • q :=n / 3

    • 렛 :=렛 + q * 3

    • n :=n - q * 3

    • n :=n + q

  • 렛 :=렛 + n

  • 리턴 렛

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(int n) {
      int ret = 0;
      while(n >= 3){
         int q = n / 3;
         ret += q * 3;
         n -= q * 3;
         n += q;
      }
      ret += n;
      return ret;
   }
};
main() {
   Solution ob;
   cout << ob.solve(10);
}

입력

10

출력

14