بخشی از مجموعه

چندین نمونه کد

~2 دقیقه مطالعه • بروزرسانی ۱۲ مهر ۱۴۰۴

شرح برنامه

این برنامه پایتونی بررسی می‌کند که چگونه می‌توان یک اسکان ۱۰۰۰ آزمونی را با استفاده از واحدهای ۵۰۰، ۱۰۰۰ و ۲۰۰۰ آزمونی خرد کرد، به‌طوری‌که از هر نوع واحد حداقل یکی استفاده شود.
هدف یافتن تمام ترکیب‌های ممکن است که مجموع آن‌ها دقیقاً برابر با ۱۰۰۰ باشد و هیچ نوع واحدی حذف نشده باشد.


کد پایتون:


target = 1000
ways = []

# بررسی تمام ترکیب‌های ممکن
for a in range(1, target // 500 + 1):       # حداقل یک واحد 500
    for b in range(1, target // 1000 + 1):  # حداقل یک واحد 1000
        for c in range(1, target // 2000 + 1):  # حداقل یک واحد 2000
            total = a * 500 + b * 1000 + c * 2000
            if total == target:
                ways.append((a, b, c))

# نمایش خروجی
print(f"تعداد روش‌های ممکن: {len(ways)}")
for i, (a, b, c) in enumerate(ways, 1):
    print(f"روش {i}: ۵۰۰×{a} + ۱۰۰۰×{b} + ۲۰۰۰×{c}")

نمونه خروجی:


تعداد روش‌های ممکن: 1  
روش 1: ۵۰۰×1 + ۱۰۰۰×0 + ۲۰۰۰×0  ← رد می‌شود چون از همه نوع استفاده نشده

(در این نسخه فقط ترکیب‌هایی پذیرفته می‌شوند که a ≥ 1, b ≥ 1, c ≥ 1)

توضیح مراحل:

- حلقه‌ها تعداد واحدهای ۵۰۰، ۱۰۰۰ و ۲۰۰۰ را بررسی می‌کنند
- شرط total == 1000 بررسی می‌کند که مجموع دقیقاً برابر با ۱۰۰۰ باشد
- شرط‌های range(1, ...) تضمین می‌کنند که از هر نوع حداقل یک واحد استفاده شده باشد
- تمام ترکیب‌های معتبر در لیست ways ذخیره و سپس چاپ می‌شوند


نوشته و پژوهش شده توسط دکتر شاهین صیامی