3119 - Impare Bac

From Bitnami MediaWiki
Revision as of 17:38, 2 April 2023 by Cuceu Andrei (talk | contribs) (Pagină nouă: ==Cerință== Subprogramul '''Impare''' are un singur parametru, '''n''', prin care primește un număr natural. Subprogramul înlocuiește fiecare cifră impară a lui '''n''' cu cea mai mare cifră pară strict mai mică decât ea (astfel cifra '''1''' se înlocuieşte cu cifra '''0''', cifra '''3''' cu cifra '''2''' etc.) și furnizează numărul obținut tot prin parametrul '''n'''. Scrieți definiția completă a subprogramului. ==Restricții de precizări== *'''≤...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerință

Subprogramul Impare are un singur parametru, n, prin care primește un număr natural. Subprogramul înlocuiește fiecare cifră impară a lui n cu cea mai mare cifră pară strict mai mică decât ea (astfel cifra 1 se înlocuieşte cu cifra 0, cifra 3 cu cifra 2 etc.) și furnizează numărul obținut tot prin parametrul n.

Scrieți definiția completă a subprogramului.


Restricții de precizări

  • ≤ n ≤ 1.000.000.000
  • Numele funcției va fi Impare
  • Funcția va primi un singur parametru, numărul n, iar la finalul funcției n va avea valoarea cerută.


Exemplu

Dacă n=235690, atunci, după apel, n=224680, iar dacă n=15690, atunci, după apel, n=4680.


Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1">

def Impare(n):

   digits = [int(d) for d in str(n)]  # obținem lista de cifre a numărului n
   for i in range(len(digits)):
       if digits[i] % 2 != 0:  # dacă cifra este impară
           max_even_digit = -1
           for j in range(digits[i]-1, -1, -1):  # căutăm cea mai mare cifră pară strict mai mică decât ea
               if j % 2 == 0:
                   max_even_digit = j
                   break
           if max_even_digit != -1:  # dacă există o cifră pară mai mică decât cifra impară
               digits[i] = max_even_digit  # înlocuim cifra impară cu cea mai mare cifră pară mai mică decât ea
   n = int(.join(map(str, digits)))  # reconstruim numărul cu cifrele modificate
  1. Exemplu de folosire a funcției

n = 235690 Impare(n) print(n) # rezultatul afișat trebuie să fie 224680

  1. Funcția main pentru citirea de la tastatură și afișarea rezultatului

if __name__ == "__main__":

   n = int(input("Introduceți un număr natural: "))
   Impare(n)
   print("Numărul cu cifrele impare înlocuite este:", n)

</syntaxhighlight>