2999 - Trim

From Bitnami MediaWiki
Revision as of 11:39, 30 April 2023 by Vardai Erwin (talk | contribs) (→‎Rezolvare ver. 1)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerință[edit]

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[edit]

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

Date de ieșire[edit]

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[edit]

  • 1 ⩽ krn 100

Exemplul 1[edit]

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

Exemplul 2[edit]

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

Rezolvare ver. 1[edit]

<syntaxhighlight lang="python" line="1" start="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.")

</syntaxhighlight>