Giả sử chúng ta có một số n. Ở đây n cho biết n chai bia đầy. Nếu đổi 3 chai bia rỗng lấy 1 chai bia đầy thì chúng ta phải tìm số chai bia mà mình có thể uống được.
Vì vậy, nếu đầu vào là 10, thì đầu ra sẽ là 14.
Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -
-
Xác định một hàm giải quyết (), điều này sẽ mất n,
-
ret:=0
-
while n> =3, do -
-
q:=n / 3
-
ret:=ret + q * 3
-
n:=n - q * 3
-
n:=n + q
-
-
ret:=ret + n
-
trả lại ret
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
#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); }
Đầu vào
10
Đầu ra
14