สมมุติว่ามีเกาะ ที่ตั้งนั้นมีร้านเดียว ร้านนี้เปิดตลอดเวลายกเว้นวันอาทิตย์ เรามีค่าต่อไปนี้เป็นอินพุต -
- N (จำนวนอาหารสูงสุดที่ซื้อได้ในแต่ละวัน)
- S (จำนวนวันที่ต้องอยู่รอด)
- M (จำนวนอาหารที่ต้องการในแต่ละวันเพื่อความอยู่รอด)
ถ้าเป็นวันจันทร์ เราต้องรอดไปอีกไม่กี่วัน เราต้องตรวจสอบว่าเราจะรอดหรือไม่ ถ้าเราสามารถหาจำนวนวันขั้นต่ำที่เราต้องซื้ออาหาร เพื่อที่เราจะสามารถอยู่รอดได้ในจำนวนวัน S ถัดไป
ดังนั้นหากอินพุตเป็น S =12, N =24, M =3 ผลลัพธ์จะเป็น True และจำนวนวันขั้นต่ำที่เราต้องซื้ออาหารคือ 2 เนื่องจากเราสามารถอยู่รอดได้ 8 วัน (จากวันจันทร์ปัจจุบัน) ถึงวันจันทร์หน้า) โดยใช้อาหาร 24 หน่วย แล้วซื้อซ้ำ 12 หน่วย ในอีก 4 วันข้างหน้า
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้า (N * 6
6) หรือ M> N แล้ว - คืนค่าเท็จ
- มิฉะนั้น
- จำนวน :=ผลหารของ (M * S) / N
- ถ้า (M * S) หารด้วย N ลงตัว
- นับ :=นับ + 1
- คืนค่า True และนับ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(S, N, M): if ((N * 6) < (M * 7) and S > 6) or M > N: return False else: count = (M * S) // N if ((M * S) % N) != 0: count += 1 return (True, count) S = 12 N = 24 M = 3 print(solve(S, N, M))
อินพุต
12, 24, 3
ผลลัพธ์
(True, 2)