0557 - Cartonase

From Bitnami MediaWiki
Revision as of 04:17, 8 May 2023 by Adrian (talk | contribs) (Pagină nouă: == Cerința == Gigel a învățat la școală despre progresii aritmetice – o progresie aritmetică este un șir de numere cu proprietatea că diferența dintre oricare două valori consecutive este aceeași. Astfel, Gigel a notat pe '''nr_cartonase''' cartonașe cei '''nr_cartonase''' termeni consecutivi ai unei progresii aritmetice și a plecat la joacă. Maleficul Costel a ascuns exact două dintre cartonașe și le-a amestecat pe celelalte. Determinaţi valorile scrise...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Gigel a învățat la școală despre progresii aritmetice – o progresie aritmetică este un șir de numere cu proprietatea că diferența dintre oricare două valori consecutive este aceeași. Astfel, Gigel a notat pe nr_cartonase cartonașe cei nr_cartonase termeni consecutivi ai unei progresii aritmetice și a plecat la joacă. Maleficul Costel a ascuns exact două dintre cartonașe și le-a amestecat pe celelalte.

Determinaţi valorile scrise pe cele două cartonaşe ascunse de Costel.

Date de intrare

Programul citește de la tastatură numărul nr_cartonase, iar apoi nr_cartonase - 2 numere naturale, reprezentând valorile scrise pe cartonașele care nu au fost ascunse.

Date de ieșire

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișa pe ecran două numere reprezentând valorile scrise pe cartonașele ascunse.

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

Restricții și precizări

  • 4 ⩽ nr_cartonase ⩽ 1000
  • valorile scrise de Gigel pe cele nr_cartonase cartonașe sunt mai mare decât 0 și mai mici decât 1000000000

Exemplu 1

Intrare
6
13
19
7
4
Ieșire
Datele de intrare corespund restricțiilor impuse
10
16


Exemplu 2

Intrare
0
Ieșire
Nu au fost respectate cerintele impuse


Rezolvare

<syntaxhighlight lang="python" line>

  1. 0815 - Lazi
  2. 0557 - Cartonase

def validare(nr_cartonase, valorile):

   # Daca datele sunt invalide v-om face raise la eroarea ValueError
   if not (nr_cartonase >= 4 and nr_cartonase <= 1000):
       raise ValueError
   for i in range(nr_cartonase - 1):
       if not (valorile[i] > 0 and valorile[i] < 1000000000):
           raise ValueError


def cartonase(nr_cartonase, valorile):

   valorile.sort()
   rest = (valorile[nr_cartonase - 1] - valorile[0]) // (nr_cartonase + 1)
   temp = 1
   valoare = valorile[0]
   for i in range(nr_cartonase + 1):
       valoare += rest
       if valoare != valorile[temp]:
           print(valoare)
       else:
           temp += 1


if __name__ == '__main__':

   nr_cartonase = int(input())
   nr_cartonase -= 2
   valorile = []
   for i in range(nr_cartonase):
       valoare = int(input())
       valorile.append(valoare)
   try:
       validare(nr_cartonase, valorile)
   except ValueError:
       print("Nu au fost respectate cerintele impuse")
   else:
       print("Datele de intrare corespund restricțiilor impuse")
       cartonase(nr_cartonase, valorile)

</syntaxhighlight>