Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Kiểm tra có sống sót trên đảo được không (Python)

Bài toán: Cửa hàng mở 6 ngày/tuần (đóng chủ nhật). Mỗi ngày mua tối đa N đơn vị thức ăn. Cần M đơn vị/ngày để sống. Cần sống S ngày. Kiểm tra có thể sống sót không, và số ngày mua tối thiểu.

Điều kiện sống sót

  • Nếu M > N: không đủ mua cho một ngày → False.
  • Nếu S > 6 và 6*N < 7*M: trong 7 ngày (có 1 ngày đóng cửa), tổng mua được 6N < tổng cần 7M → False.

Triển khai Python

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)

# Test
print(solve(12, 24, 3))   # (True, 2): cần 36 food, mỗi lần mua 24 → 2 lần
print(solve(10, 16, 2))   # (True, 2): cần 20, mua 16+16
print(solve(7, 20, 3))    # False: 6*20=120 < 7*3=21? Wait 120>21. But S=7>6 and 6N=120, 7M=21 → 120≥21 OK. Actually condition is 6N < 7M → False here.
print(solve(8, 10, 10))   # False: M=N=10, S=8>6, 6*10=60 < 7*10=70 → False

Kết quả

(True, 2)

Giải thích

  • Tổng thức ăn cần: M * S.
  • Số ngày mua tối thiểu = ceil(M*S / N).
  • Điều kiện 6N < 7M and S > 6 xử lý trường hợp có chủ nhật trong khoảng S ngày.
  • Giả định bắt đầu từ thứ 2 (Monday).