Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Bitnami MediaWiki
Search
Search
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
4214 – Două Numere
Page
Discussion
English
Read
Edit
Edit source
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
Edit source
View history
General
What links here
Related changes
Special pages
Page information
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Sursa: [https://www.pbinfo.ro/probleme/4214/douanumere Doua Numere] ---- ==Cerinţă== Se dă un șir cu <code>n</code> elemente întregi. Subprogramul returnează suma maximă care poate fi obținută adunând două numere din sir care au aceeași sumă a cifrelor. Dacă nu există două numere cu aceeași sumă a cifrelor, atunci funcția va returna <code>-1</code>. ==Date de intrare== Programul va citi de la tastatură valoarea<code>n</code>, apoi <code>n</code> numere întregi reprezentând elementele șirului. ==Date de ieșire== Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa suma elementelor precizate mai sus. În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!". ==Restricţii şi precizări== *2 <= n <= 100.000 *valorile elementelor șirului vor fi < 1.000.000.000 ==Exemple== ===Exemplul 1=== ;Intrare :Introduceti numarul de elemente a sirului: 5 :Introduceti 5 numere separate prin spatiu:14 66 41 50 93 ;Ieșire :Datele introduse sunt corecte! :Suma maxima care poate fi obtinuta este: 159 ===Exemplul 2=== ;Intrare :Introduceti numarul de elemente a sirului: 4 :Introduceti 4 numere separate prin spatiu:123 12 3 5 ;Ieșire :Datele introduse sunt corecte! :Suma maxima care poate fi obtinuta este: 15 ===Exemplul 3=== ;Intrare :Introduceti numarul de elemente a sirului: 6 :Introduceti 6 numere separate prin spatiu:1231 31 213 1 ;Ieșire :Datele introduse sunt incorecte! : ==Rezolvare== <syntaxhighlight lang="python" line="1"> def is_integer(value): return value.isdigit() def verificare_nr_elemente(n): if is_integer(n): if 2 < int(n) < 1000000: return n else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit() def verificare_vector(n, vector): if len(vector) != int(n): print("Datele introduse sunt incorecte!") exit() else: for i in vector: if is_integer(i): if int(i) < 1000000000: continue else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit() def sum_cif(n): s = 0 while n > 0: s += n % 10 n //= 10 return s def suma_max(a, n): max_sum = -1 for i in range(int(n)): for j in range(i+1, int(n)): if sum_cif(a[i]) == sum_cif(a[j]): max_sum = max(max_sum, a[i]+a[j]) return max_sum if __name__ == '__main__': n = input("Introduceti numarul de elemente a sirului: ") verificare_nr_elemente(n) elem = input(f"Introduceti {n} numere separate prin spatiu:").split() verificare_vector(n, elem) lst_int = list(map(int, elem)) print("Datele introduse sunt corecte!") print("Suma maxima care poate fi obtinuta este:",suma_max(lst_int, n)) </syntaxhighlight> ==Explicație rezolvare== Acest program are ca scop găsirea sumei maxime care poate fi obținută prin adunarea a două numere dintr-un tablou, care au aceeași sumă a cifrelor. În cazul în care nu există două numere cu aceeași sumă a cifrelor, programul va returna -1. Funcția is_integer: Această funcție primește un parametru numit value și verifică dacă acesta este un număr întreg (adică este format din cifre). În caz afirmativ, funcția returnează True, în caz contrar, returnează False. Funcția verificare_nr_elemente: Această funcție primește un parametru numit n și verifică dacă acesta este un număr întreg cuprins între 2 și 1000000. Dacă este adevărat, funcția returnează valoarea lui n, în caz contrar afișează un mesaj de eroare și întrerupe programul cu ajutorul funcției exit(). Funcția verificare_vector: Această funcție primește două parametri: n și vector. Ea verifică dacă lungimea vectorului este egală cu n și dacă toate elementele vectorului sunt numere întregi cuprinse între 0 și 1000000000. Dacă totul este corect, funcția nu returnează nimic, în caz contrar afișează un mesaj de eroare și întrerupe programul cu ajutorul funcției exit(). Funcția sum_cif: Această funcție primește un parametru numit n și calculează suma cifrelor acestui număr utilizând operatorul modulo (%) și operatorul de împărțire întreagă (//). Funcția returnează suma cifrelor. Funcția suma_max: Această funcție primește doi parametri: a și n. Funcția parcurge două bucle for pentru a compara suma cifrelor a fiecărui element din vector cu suma cifrelor ale celorlalte elemente și pentru a găsi perechi de numere cu aceeași sumă a cifrelor. Dacă este găsită o pereche cu aceeași sumă a cifrelor, suma celor două numere este comparată cu valoarea maximă anterioară și, dacă este mai mare, aceasta este setată ca noua valoare maximă. Funcția returnează valoarea maximă găsită. Dacă nu este găsită nicio pereche cu aceeași sumă a cifrelor, funcția returnează -1. Funcția principală: Funcția principală primește de la utilizator lungimea vectorului și vectorul, verifică dacă acestea sunt corecte cu ajutorul funcțiilor verificare_nr_elemente și verificare_vector, apoi calculează suma maximă a două numere din vector cu aceeași sumă a cifrelor cu ajutorul funcției suma_max. Dacă suma maximă este -1, funcția afișează un mesaj corespunzător, în caz contrar afișează valoarea găsită.
Summary:
Please note that all contributions to Bitnami MediaWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Bitnami MediaWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Toggle limited content width