สมมติว่าเรามีตัวเลขหนึ่งตัว 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