3180 - Marte1

From Bitnami MediaWiki

Sursa: 3180 - Marte 1


Cerinţa[edit | edit source]

Pe planeta Marte banii sunt altfel decât la noi. Există 3 tipuri de monede: primul tip de monedă valorează moenda_tip1 lei marțieni, al doilea tip valorează moenda_tip2 lei marțieni, iar al treilea tip de monedă valorează moenda_tip3 lei marțieni. Marțianul Iggle are cantitate_tip1 monede de primul tip, cantitate_tip2 monede de al doilea tip și cantitate_tip3 monede de al treilea tip. Câți lei marțieni are Iggle?

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele moenda_tip1, moenda_tip2, moenda_tip3, sepratate prin câte un spațiu, iar pe rândul următor numerele cantitate_tip1, cantitate_tip2, cantitate_tip3 și acestea separate tot prin câte un spațiu.

Date de ieșire[edit | edit source]

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse.", urmat, pe rândul următor, de suma pe care o deține Iggle. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, programul va afișa "Datele de intrare nu corespund restricțiilor impuse.".

Restricţii şi precizări[edit | edit source]

  • moenda_tip1, moenda_tip2, moenda_tip3 ∈ ℕ
  • cantitate_tip1, cantitate_tip2, cantitate_tip3 ∈ ℕ
  • 1 ⩽ moenda_tip1, moenda_tip2, moenda_tip3 ⩽ 1.000
  • 1 ⩽ cantitate_tip1, cantitate_tip2, cantitate_tip3 ⩽ 10.000

Exemplu[edit | edit source]

Intrare
2 3 7
4 2 2
Ieșire
Datele introduse corespund restricțiilor impuse.
28


Intrare
0 5 3
5 5 5
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Intrare
-2 abs 5
-10 2 5
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 3180 - Marte 1

def validare_date_tip_monede(moneda_tip1: str, moneda_tip2: str, moneda_tip3: str) -> bool:

   if moneda_tip1.isdigit() and moneda_tip2.isdigit() and moneda_tip3.isdigit():
       if 1 <= int(moneda_tip1) <= 1_000 and 1 <= int(moneda_tip2) <= 1_000 and 1 <= int(moneda_tip3) <= 1_000:
           return True
   return False


def validare_date_cantitate(cantitate_tip1: str, cantitate_tip2: str, cantitate_tip3: str) -> bool:

   if cantitate_tip1.isdigit() and cantitate_tip2.isdigit() and cantitate_tip3.isdigit():
       if 1 <= int(cantitate_tip1) <= 10_000 and 1 <= int(cantitate_tip2) <= 10_000 and 1 <= int(cantitate_tip3) <= 10_000:
           return True
   return False


def marte1(*arg) -> int:

   moneda_tip1: int = arg[0]
   moneda_tip2: int = arg[1]
   moenda_tip3: int = arg[2]
   
   cantitate_tip1: int = arg[3]
   cantitate_tip2: int = arg[4]
   cantitate_tip3: int = arg[5]
   
   return moneda_tip1 * cantitate_tip1 + moneda_tip2 * cantitate_tip2 + moenda_tip3 * cantitate_tip3


if __name__ == "__main__":

   linia1 = input()
   linia1 = linia1.split(" ")
   
   moneda_tip1, moneda_tip2, moneda_tip3 = linia1[0], linia1[1], linia1[2]
   
   linia2 = input()
   linia2 = linia2.split(" ")
   
   cantitate_tip1, cantitate_tip2, cantitate_tip3 = linia2[0], linia2[1], linia2[2]
   
   if validare_date_tip_monede(moneda_tip1, moneda_tip2, moneda_tip3) and validare_date_cantitate(cantitate_tip1, cantitate_tip2, cantitate_tip3):
       moneda_tip1, moneda_tip2, moneda_tip3 = int(moneda_tip1), int(moneda_tip2), int(moneda_tip3)
       
       cantitate_tip1, cantitate_tip2, cantitate_tip3 = int(cantitate_tip1), int(cantitate_tip2), int(cantitate_tip3)
       
       print("Datele de intrare corespund restricțiilor impuse.")
       print(marte1(moneda_tip1, moneda_tip2, moneda_tip3, cantitate_tip1, cantitate_tip2, cantitate_tip3))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")
   

</syntaxhighlight>