4320 - Cifre 22: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:


== Cerinţa ==
== Cerinţa ==
Se dă un șir cu '''numere''' numere naturale. Să se determine numărul din șir care are asociatul par maxim. Dacă există mai multe numere cu asociat par maxim se va determina numărul mai mare.
Se dă un șir cu '''n''' numere naturale. Să se determine numărul din șir care are asociatul par maxim. Dacă există mai multe numere cu asociat par maxim se va determina numărul mai mare.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''numere''', iar apoi '''numere''' numere naturale, separate prin spații.
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații.
== Date de ieşire ==
== Date de ieşire ==
Dacă datele sunt introduse corect, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa pe ecran valoarea cerută. în caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
Dacă datele sunt introduse corect, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa pe ecran numărul din șir care are asociatul par maxim. În caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
== Restricții și precizări ==
== Restricții și precizări ==
* '''numere''' ⩽ 100
* '''n''' ⩽ 100
* cele '''numere''' numere sunt sunt mai mici decât 10^9
* cele '''n''' numere sunt sunt mai mici decât <math>10^{9}</math>
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
Line 15: Line 15:
: 19 410 1470 1256 70
: 19 410 1470 1256 70
; Ieșire
; Ieșire
: Datele sunt introduse corect.
: 1470
: 1470
== Explicație ==
== Explicație ==
Line 29: Line 30:


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#4320
def get_asociat_par(numar):
def get_asociat_par(numar):
        cifre = [int(c) for c in str(numar)] # Creează o listă cu cifrele numărului
    cifre = [int(c) for c in str(numar)] # Creează o listă cu cifrele numărului
        cifre_pare = [c for c in cifre if c % 2 == 0] # Creează o listă cu cifrele pare
    cifre_pare = [c for c in cifre if c % 2 == 0] # Creează o listă cu cifrele pare
        cifre_impare = [c for c in cifre if c % 2 == 1] # Creează o listă cu cifrele impare
    cifre_impare = [c for c in cifre if c % 2 == 1] # Creează o listă cu cifrele impare
        if not cifre_pare: # Dacă nu există cifre pare
    if not cifre_pare: # Dacă nu există cifre pare
                return 0
        return 0
        else:
    else:
                return int(''.join([str(c) for c in cifre_pare])) # Concatenează cifrele pare într-un șir și returnează numărul obținut
        return int(''.join([str(c) for c in cifre_pare])) # Concatenează cifrele pare într-un șir și returnează numărul obținut
 


numere = int(input("Introduceți numărul de numere: "))
if __name__ == "__main__":
    numere = int(input("Introduceți numărul de numere: "))


if numere > 100:
    if numere > 100:
         print("Datele nu au fost introduse corect.")
         print("Datele nu au fost introduse corect.")
else:
    else:
         max_par = -1
         max_par = -1
         max_par_num = -1
         max_par_num = -1
Line 48: Line 53:
         lista_numere = [int(x) for x in numere_str.split()]
         lista_numere = [int(x) for x in numere_str.split()]
         for num in lista_numere:
         for num in lista_numere:
# Calculează asociatul par al numărului
            # Calculează asociatul par al numărului
             ap = get_asociat_par(num)
             ap = get_asociat_par(num)
# Verifică dacă asociatul par al numărului este mai mare decât maximul anterior
            # Verifică dacă asociatul par al numărului este mai mare decât maximul anterior
# sau are același asociat par, dar este mai mare numeric
            # sau are același asociat par, dar este mai mare numeric
             if ap > max_par or (ap == max_par and num > max_par_num):
             if ap > max_par or (ap == max_par and num > max_par_num):
                    max_par = ap
                max_par = ap
                    max_par_num = num
                max_par_num = num


print("Datele sunt introduse corect.")
        print("Datele sunt introduse corect.")
print(max_par_num)
        print(max_par_num)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 17:17, 27 April 2023

Sursă: [1]

Cerinţa[edit | edit source]

Se dă un șir cu n numere naturale. Să se determine numărul din șir care are asociatul par maxim. Dacă există mai multe numere cu asociat par maxim se va determina numărul mai mare.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa "Datele sunt introduse corect.", apoi se va afișa pe ecran numărul din șir care are asociatul par maxim. În caz contrar, se va afișa pe ecran. "Datele nu au fost introduse corect.".

Restricții și precizări[edit | edit source]

  • n ⩽ 100
  • cele n numere sunt sunt mai mici decât

Exemplu[edit | edit source]

Intrare
5
19 410 1470 1256 70
Ieșire
Datele sunt introduse corect.
1470

Explicație[edit | edit source]

Asociatul par al lui 19 este 0. Asociatul par al lui 410 este 40. Asociatul par al lui 1470 este 40. Asociatul par al lui 1256 este 26. Asociatul par al lui 70 este 0.

Valoarea maximă a asociatului par este 40. Există două numere care îl au pe 40 ca asociat par, dintre care este mai mare 1470.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 4320

def get_asociat_par(numar):

   cifre = [int(c) for c in str(numar)] # Creează o listă cu cifrele numărului
   cifre_pare = [c for c in cifre if c % 2 == 0] # Creează o listă cu cifrele pare
   cifre_impare = [c for c in cifre if c % 2 == 1] # Creează o listă cu cifrele impare
   if not cifre_pare: # Dacă nu există cifre pare
       return 0
   else:
       return int(.join([str(c) for c in cifre_pare])) # Concatenează cifrele pare într-un șir și returnează numărul obținut


if __name__ == "__main__":

   numere = int(input("Introduceți numărul de numere: "))
   if numere > 100:
       print("Datele nu au fost introduse corect.")
   else:
       max_par = -1
       max_par_num = -1
       numere_str = input("Introduceți cele " + str(numere) + " numere separate prin spații: ")
       lista_numere = [int(x) for x in numere_str.split()]
       for num in lista_numere:
           # Calculează asociatul par al numărului
           ap = get_asociat_par(num)
           # Verifică dacă asociatul par al numărului este mai mare decât maximul anterior
           # sau are același asociat par, dar este mai mare numeric
           if ap > max_par or (ap == max_par and num > max_par_num):
               max_par = ap
               max_par_num = num
       print("Datele sunt introduse corect.")
       print(max_par_num)

</syntaxhighlight>