2337 - Coadă2: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
Știind numerele '''x y z''' , aflați câte persoane sunt la coadă în total. Uneori, însă, e posibil ca aceștia să fi numărat greșit numărul de persoane, și să nu se poată calcula numărul total de persoane din coada. În acest caz trebuie sa afișați '''-1'''.
Știind numerele '''x y z''' , aflați câte persoane sunt la coadă în total. Uneori, însă, e posibil ca aceștia să fi numărat greșit numărul de persoane, și să nu se poată calcula numărul total de persoane din coada. În acest caz trebuie sa afișați '''-1'''.
== Date de intrare ==
== Date de intrare ==
Pe prima linie a fișierului de intrare '''coada2.in''' se vor afla 3 numere naturale '''x y z'''.
Pe prima linie a fișierului de intrare '''coada2in.txt''' se vor afla 3 numere naturale '''x y z'''.
== Date de ieșire ==  
== Date de ieșire ==  
În fișierul de ieșire '''coada2.out''' se va afișa un singur număr, reprezentând lungimea cozii la care stau copiii. Dacă datele sunt incorecte, atunci afișați '''-1'''.
În fișierul de ieșire '''coada2out.txt''' se va afișa un singur număr, reprezentând lungimea cozii la care stau copiii. Dacă datele sunt incorecte, atunci afișați '''-1'''.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.", iar daca se indeplinesc se afiseaza mesajul "Datele de intrare corespund restricțiilor impuse."
== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 0 ≤ '''x, y, z''' ⩽ 1.000.000.000.000.000.000
* 0 ≤ '''x, y, z''' ⩽ 1.000.000.000.000.000.000
== Exemplul 1 ==
== Exemplul 1 ==
; coada2.in
; coada2in.txt
: 0 1 1
0 1 1
; coada2.out
; coada2out.txt
: 2
Datele de intrare corespund restricțiilor impuse.
2
== Exemplul 2 ==
; coada2in.txt
-1 1 1
; coada2out.txt
Datele de intrare nu corespund restricțiilor impuse.
<br>
<br>


Line 18: Line 25:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def calculeaza_numar_persoane(x, y, z):
def calculeaza_numar_persoane(x, y, z):
     if x >= y or x >= z:
     if not (0 <= x <= 1000000000000000000 and 0 <= y <= 1000000000000000000 and 0 <= z <= 1000000000000000000):
        raise ValueError("Datele de intrare nu corespund restricțiilor impuse.")
    elif x >= y or x >= z:
         return -1
         return -1
     else:
     else:
Line 24: Line 33:


if __name__ == "__main__":
if __name__ == "__main__":
     # Citim datele din fișierul de intrare
     try:
    with open("coada2.in", "r") as f:
        # Citim datele din fișierul de intrare
        x, y, z = map(int, f.readline().strip().split())
        with open("coada2in.txt", "r") as f:
            x, y, z = map(int, f.readline().strip().split())


    # Calculăm numărul total de persoane în linie utilizând funcția
        # Calculăm numărul total de persoane în linie utilizând funcția
    numar_persoane = calculeaza_numar_persoane(x, y, z)
        numar_persoane = calculeaza_numar_persoane(x, y, z)
 
        # Scriem rezultatul în fișierul de ieșire
        with open("coada2out.txt", "w") as f:
            f.write(str(numar_persoane))
        print("Datele de intrare corespund restricțiilor impuse.")
    except ValueError as ve:
        print(ve)


    # Scriem rezultatul în fișierul de ieșire
    with open("coada2.out", "w") as f:
        f.write(str(numar_persoane))
</syntaxhighlight>
</syntaxhighlight>



Latest revision as of 19:13, 9 January 2024

Cerinţa[edit | edit source]

Andrei și Mihai stau la coada la magazin pentru a-și cumpăra bomboane. Andrei este în fața lui Mihai la coadă, iar între cei doi se afla alte x persoane. Mihai a observat că în total, în fata lui , se afla y persoane, iar Andrei a observat că în spatele lui se află z persoane. Știind numerele x y z , aflați câte persoane sunt la coadă în total. Uneori, însă, e posibil ca aceștia să fi numărat greșit numărul de persoane, și să nu se poată calcula numărul total de persoane din coada. În acest caz trebuie sa afișați -1.

Date de intrare[edit | edit source]

Pe prima linie a fișierului de intrare coada2in.txt se vor afla 3 numere naturale x y z.

Date de ieșire[edit | edit source]

În fișierul de ieșire coada2out.txt se va afișa un singur număr, reprezentând lungimea cozii la care stau copiii. Dacă datele sunt incorecte, atunci afișați -1. În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.", iar daca se indeplinesc se afiseaza mesajul "Datele de intrare corespund restricțiilor impuse."

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

  • 0 ≤ x, y, z ⩽ 1.000.000.000.000.000.000

Exemplul 1[edit | edit source]

coada2in.txt
0 1 1
coada2out.txt
Datele de intrare corespund restricțiilor impuse.
2

Exemplul 2[edit | edit source]

coada2in.txt
-1 1 1
coada2out.txt
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def calculeaza_numar_persoane(x, y, z):

   if not (0 <= x <= 1000000000000000000 and 0 <= y <= 1000000000000000000 and 0 <= z <= 1000000000000000000):
       raise ValueError("Datele de intrare nu corespund restricțiilor impuse.")
   elif x >= y or x >= z:
       return -1
   else:
       return y + z - x

if __name__ == "__main__":

   try:
       # Citim datele din fișierul de intrare
       with open("coada2in.txt", "r") as f:
           x, y, z = map(int, f.readline().strip().split())
       # Calculăm numărul total de persoane în linie utilizând funcția
       numar_persoane = calculeaza_numar_persoane(x, y, z)
       # Scriem rezultatul în fișierul de ieșire
       with open("coada2out.txt", "w") as f:
           f.write(str(numar_persoane))
       print("Datele de intrare corespund restricțiilor impuse.")
   except ValueError as ve:
       print(ve)

</syntaxhighlight>

Explicație[edit | edit source]

La coada se afla doar Andrei și Mihai. Între cei doi nu este nicio persoană. în fața lui Mihai este doar o persoana – Andrei. În spatele lui Andrei este de asemenea o singura persoana – Mihai.