3966 - Adunare: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 2: Line 2:


== Cerinţa ==
== Cerinţa ==
Gigel are 2 bancnote, de '''bancnota1''' și '''bancnota2''' lei. El nu a învățat încă adunarea cu transport – cea în care adunarea a două cifre corespunzătoare depășește 10 (de exemplu 11 + 99), ci doar cea simplă, în care adunând cifre corespunzătoare din cele două numere nu se depășește 10 (de exemplu 11 + 22).
Gigel are 2 bancnote, de '''a''' și '''b''' lei. El nu a învățat încă adunarea cu transport – cea în care adunarea a două cifre corespunzătoare depășește 10 (de exemplu 11 + 99), ci doar cea simplă, în care adunând cifre corespunzătoare din cele două numere nu se depășește 10 (de exemplu 11 + 22).
<br>
<br>
Stabiliți dacă Gigel știe să determine câte bomboane va cumpăra cu cele două bancnote, știind că o bomboană costă 1 leu. Dacă Gigel nu reușește să afle numărul de bomboane, va trebui să îl ajutați voi!
Stabiliți dacă Gigel știe să determine câte bomboane va cumpăra cu cele două bancnote, știind că o bomboană costă 1 leu. Dacă Gigel nu reușește să afle numărul de bomboane, va trebui să îl ajutați voi!
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numerele '''bancnota1''', '''bancnota2'''.
Programul citește de la tastatură numerele '''a''', '''b'''.
== Date de ieşire ==
== Date de ieşire ==
Programul va afișa pe ecran un mesaj, în funcție de valorile citite. Vezi exemplele!
Dacă datele introduse sunt corecte, pe ecran se va afișa mesajul: '''"Datele sunt introduse corect."''', apoi programul va afișa pe un mesaj, în funcție de valorile citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."''''.
== Restricții și precizări ==
== Restricții și precizări ==
* 1 &les; '''bancnota1''', '''bancnota2''' &les;  2.000.000.000
* 1 &les; '''a''', '''b''' &les;  2.000.000.000
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
Line 25: Line 25:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


bancnota1, bancnota2 = map(int, input().split())
def verifica_datele(a: int, b: int) -> bool:
    if 1 <= a <= 2000000000 and 1 <= b <= 2000000000:
        return True
    else:
        return False
 
 
def rezolva_problema(a: int, b: int) -> str:
    if (a % 10) + (b % 10) <= 9:
        return "Gigel stie!"
    else:
        numar_bomboane = (a // 10) * 10 + a % 10 + (b // 10) * 10 + b % 10
        return f"Gigel nu stie! El poate cumpara {numar_bomboane} bomboane!"
 
 
 
if __name__ == "__main__":
    a, b = map(int, input().split())
    if verifica_datele(a, b):
        print("Datele sunt introduse corect.")
        print(rezolva_problema(a, b))
    else:
        print("Datele nu corespund restricțiilor impuse.")


# Verificăm dacă suma poate fi exprimată printr-un număr format din cifre mai mici sau egale cu 9
if (bancnota1 % 10) + (bancnota2 % 10) <= 9:
    print("Gigel stie!")
else:
    # Calculăm numărul de bomboane pe care le poate cumpăra Gigel
    numar_bomboane = (bancnota1 // 10) * 10 + bancnota1 % 10 + (bancnota2 // 10) * 10 + bancnota2 % 10
    print(f"Gigel nu stie! El poate cumpara {numar_bomboane} bomboane!")






</syntaxhighlight>
</syntaxhighlight>
== Explicație rezolvare ==
Funcția '''verifica_datele''' primește două argumente '''a''' și '''b''' (de tip întreg) și returnează '''True''' dacă acestea se află între 1 și 2.000.000.000 (inclusiv), și '''False''' în caz contrar.<br><br> Funcția '''rezolva_problema''' primește de asemenea două argumente '''a''' și '''b''', și returnează un mesaj corespunzător cerinței problemei. Dacă suma ultimei cifre ale lui '''a''' cu ultima cifră ale lui '''b''' este mai mică sau egală cu '''9''', atunci Gigel știe să determine numărul de bomboane pe care le poate cumpăra. În caz contrar, se calculează numărul de bomboane pe care le poate cumpăra Gigel (suma tuturor cifrelor lui '''a''' și '''b''', cu excepția ultimei cifre a fiecăruia), și se afișează un mesaj corespunzător.<br><br>Funcția '''main''' citește cele două bancnote de la tastatură, verifică dacă datele sunt corecte, și afișează un mesaj corespunzător (în funcție de verificarea făcută de verifica_datele). Dacă datele sunt corecte, se afișează mesajul '''"Datele sunt introduse corect."''' și se calculează numărul de bomboane pe care le poate cumpăra Gigel, în caz contrar se afișează mesajul '''"Datele nu corespund restricțiilor impuse."'''.

Revision as of 17:39, 27 April 2023

Sursă: [1]

Cerinţa

Gigel are 2 bancnote, de a și b lei. El nu a învățat încă adunarea cu transport – cea în care adunarea a două cifre corespunzătoare depășește 10 (de exemplu 11 + 99), ci doar cea simplă, în care adunând cifre corespunzătoare din cele două numere nu se depășește 10 (de exemplu 11 + 22).
Stabiliți dacă Gigel știe să determine câte bomboane va cumpăra cu cele două bancnote, știind că o bomboană costă 1 leu. Dacă Gigel nu reușește să afle numărul de bomboane, va trebui să îl ajutați voi!

Date de intrare

Programul citește de la tastatură numerele a, b.

Date de ieşire

Dacă datele introduse sunt corecte, pe ecran se va afișa mesajul: "Datele sunt introduse corect.", apoi programul va afișa pe un mesaj, în funcție de valorile citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."'.

Restricții și precizări

  • 1 ⩽ a, b ⩽ 2.000.000.000

Exemplu

Intrare
11 22
Ieșire
Gigel stie!


Intrare
11 99
Ieșire
Gigel nu stie! El poate cumpara 110 bomboane!

Rezolvare

<syntaxhighlight lang="python" line>

def verifica_datele(a: int, b: int) -> bool:

   if 1 <= a <= 2000000000 and 1 <= b <= 2000000000:
       return True
   else:
       return False


def rezolva_problema(a: int, b: int) -> str:

   if (a % 10) + (b % 10) <= 9:
       return "Gigel stie!"
   else: 
       numar_bomboane = (a // 10) * 10 + a % 10 + (b // 10) * 10 + b % 10
       return f"Gigel nu stie! El poate cumpara {numar_bomboane} bomboane!"


if __name__ == "__main__":

   a, b = map(int, input().split())
   if verifica_datele(a, b):
       print("Datele sunt introduse corect.")
       print(rezolva_problema(a, b))
   else:
       print("Datele nu corespund restricțiilor impuse.")



</syntaxhighlight>

Explicație rezolvare

Funcția verifica_datele primește două argumente a și b (de tip întreg) și returnează True dacă acestea se află între 1 și 2.000.000.000 (inclusiv), și False în caz contrar.

Funcția rezolva_problema primește de asemenea două argumente a și b, și returnează un mesaj corespunzător cerinței problemei. Dacă suma ultimei cifre ale lui a cu ultima cifră ale lui b este mai mică sau egală cu 9, atunci Gigel știe să determine numărul de bomboane pe care le poate cumpăra. În caz contrar, se calculează numărul de bomboane pe care le poate cumpăra Gigel (suma tuturor cifrelor lui a și b, cu excepția ultimei cifre a fiecăruia), și se afișează un mesaj corespunzător.

Funcția main citește cele două bancnote de la tastatură, verifică dacă datele sunt corecte, și afișează un mesaj corespunzător (în funcție de verificarea făcută de verifica_datele). Dacă datele sunt corecte, se afișează mesajul "Datele sunt introduse corect." și se calculează numărul de bomboane pe care le poate cumpăra Gigel, în caz contrar se afișează mesajul "Datele nu corespund restricțiilor impuse.".