3966 - Adunare

From Bitnami MediaWiki
Revision as of 17:40, 27 April 2023 by Tamas Claudia (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursă: [1]

Cerinţa[edit | edit source]

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

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

Date de ieşire[edit | edit source]

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

  • 1 ⩽ a, b ⩽ 2.000.000.000

Exemplu[edit | edit source]

Intrare
11 22
Ieșire
Datele sunt introduse corect.
Gigel stie!


Intrare
11 99
Ieșire
Datele sunt introduse corect.
Gigel nu stie! El poate cumpara 110 bomboane!

Rezolvare[edit | edit source]

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

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.".