2999 - Trim

De la Universitas MediaWiki

Cerință

Scrieți un program care citește de la tastatură trei numere naturale n, k și r și afișează:

  • câte submulțimi sunt formate dintr-un număr de elemente pare (cardinalul submulțimilor este un număr par)
  • media aritmetică a elementelor din submulțimile cu număr de ordine k și r (0 < k ≤ r ≤ 100)
  • elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.

Date de intrare

Programul va citi de la tastatură n, k și r numere naturale.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Se afișează fiecare pe câte o linie:

  • numărul de submulțimi cu număr de elemente pare
  • media aritmetică a numerelor din submulțimile k și r
  • elementele submulțimii r sub forma: primul, al doilea, ultimul, al treilea, al patrulea, penultimul, etc.

În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • 1 ⩽ krn 100

Exemplul 1

Intrare
10
3
7
Ieșire
Datele introduse corespund restricțiilor impuse.
1024
5
7 9

Exemplul 2

Intrare
12
3
4
Ieșire
Datele introduse corespund restricțiilor impuse.
4096
3
4 6 8 10 12

Rezolvare ver. 1

def validare(k, r, n):
    return 1 <= k <= r <= n <= 100


def numar_submultimi_pare(n):
    # Calculează numărul de submulțimi cu cardinalitatea pară
    return 2 ** n


def medie_submultimi(submultimi, k, r):
    # Calculează media aritmetică a elementelor din submulțimile k și r
    # Dacă k și r sunt în afara intervalului corect, returnează None
    if k < 1 or r > len(submultimi) or k > r:
        return None
    else:
        submultimi_k_r = submultimi[k - 1:r:2]  # obține submulțimile de la k la r, cu pași de 2
        medie = sum(submultimi_k_r) / len(submultimi_k_r)
        return medie


def submultime_specifica(submultimi, r):
    # Obține elementele submulțimii r sub forma specificată
    if r > len(submultimi):
        return None
    else:
        submultime_r = submultimi[r - 1::2]  # obține elementele submulțimii r, cu pași de 2
        return submultime_r


if __name__ == "__main__":
    # Citirea datelor de intrare de la tastatură
    n = int(input("Introduceți numărul total de elemente: "))
    k = int(input("Introduceți numărul de ordine k: "))
    r = int(input("Introduceți numărul de ordine r: "))

    # Verificare restricții
    if not validare(k, r, n):
        print("Datele de intrare nu corespund restricțiilor impuse.")
    else:
        # Obținere număr de submulțimi cu cardinalitatea pară
        print("Datele de intrare corespund restricțiilor impuse.")
        numar_submultimi_pare = numar_submultimi_pare(n)
        print("Numărul de submulțimi cu cardinalitatea pară:", numar_submultimi_pare)

        # Generare submulțimi
        submultimi = list(range(1, n + 1))

        # Obținere medie aritmetică
        medie = medie_submultimi(submultimi, k, r)
        if medie is not None:
            print("Media aritmetică a numerelor din submulțimile k și r:", medie)
        else:
            print("Nu se poate calcula media aritmetică pentru valorile introduse.")

        # Obținere submulțime specifică
        submultime_specifica = submultime_specifica(submultimi, r)
        if submultime_specifica is not None:
            print("Elementele submulțimii r sub forma specificată:", submultime_specifica)
        else:
            print("Nu se poate obține submulțimea specificată pentru valorile introduse.")