4194 - EchipaFB

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerinta

Într-o şcoală sunt F fete şi B băieţi. Pentru fiecare valoare a lui K de la 1 la F+B, aflaţi în câte moduri se poate alcătui o echipă formată din K elevi, care să conţină un număr impar de fete.

Date de intrare

Programul citește de la tastatură numerele F şi B.

Date de iesire

Programul va afișa pe ecran, pentru fiecare K de la 1 la F+B, numărul de moduri în care putem forma echipa, modulo 998244353.

Restrictii si precizari

  • 1 ⩽ F,B ⩽ 100.000

Exemplul 1

Intrare
3 2
Iesire
Datele introduse corespund restrictiilor impuse
3 6 4 2 1

Exemplul 2

Intrare
-10 7
Iesire
Datele introduse nu corespund restrictiilor impuse

Rezolvare

MODULO = 998244353

def este_input_valid(F, B):
    return 1 <= F <= 100000 and 1 <= B <= 100000

def calculeaza_moduri(F, B):
    rezultate = []
    total_elevi = F + B

    for K in range(1, total_elevi + 1):
        moduri = 0
        for numar_fete in range(1, min(K, F) + 1, 2):
            numar_baieti = K - numar_fete
            if numar_baieti <= B:
                moduri += 1

        rezultate.append(moduri % MODULO)

    return rezultate

if __name__ == "__main__":
    # Citire date de intrare
    F = int(input("Introduceți numărul de fete (F): "))
    B = int(input("Introduceți numărul de băieți (B): "))

    # Verificare validitate date de intrare
    if not este_input_valid(F, B):
        print("Datele introduse nu corespund restricțiilor impuse.")
    else:
        # Calcul și afișare rezultate
        rezultate = calculeaza_moduri(F, B)
        for K, moduri in enumerate(rezultate, start=1):
            print(f"Pentru K = {K}, numărul de moduri este: {moduri}")

Explicatie

Să notăm cu A,B,C fetele şi cu X,Y băieţii. Pentru K=1 echipele pot fi A, B, respectiv C. Pentru K=2: AX, AY, BX, BY, CX, CY. Pentru K=3: AXY, BXY, CXY, ABC. Pentru K=4: ABCX, ABCY. Pentru K=5: ABCXY.