สมมติว่าเรามีตัวเลขหนึ่งตัว n ในที่นี้ n หมายถึง n ขวดเบียร์เต็ม ถ้าเราสามารถแลกเบียร์เปล่า 3 ขวดเป็นเบียร์ 1 ขวดเต็มได้ เราก็ต้องหาจำนวนขวดเบียร์ที่เราดื่มได้
ดังนั้นหากอินพุตเท่ากับ 10 เอาต์พุตจะเป็น 14
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
กำหนดฟังก์ชัน Solve() ซึ่งจะใช้เวลา n
-
ยกเลิก :=0
-
ในขณะที่ n>=3 ทำ -
-
q :=n / 3
-
ret :=ret + q * 3
-
n :=n - q * 3
-
n :=n + q
-
-
ret :=ret + 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