2248 - Coordonate

From Bitnami MediaWiki
Revision as of 18:08, 22 April 2023 by Vardai Erwin (talk | contribs) (→‎Date de intrare)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerință[edit | edit source]

Se consideră un pătrat mare împărțită în n x n pătrățele identice. Pătratul are deci n linii și n coloane (numerotate de la 1 la n), iar în fiecare pătrățel este trecut câte un număr natural cuprins între 1 și , ca în exemplul de mai jos în care n = 4:

Pentru valorile n, x, y, val date, trebuie să determinați:

  • ce valoare V se află în pătratul n x n la poziția (x, y).
  • la ce poziție (i, j) se află valoarea val în pătratul n x n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n, x, y, val pe linii separate.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran numerele V, i, j, separate prin câte un spațiu, unde V reprezintă valoarea de la poziția (x, y), iar (i, j) reprezintă poziția unde se află valoarea val. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 20000
  • 1 ≤ x, yn
  • 1 ≤ val

Exemplul 1[edit | edit source]

Intrare
4
2
3
12
Ieșire
Datele de intrare corespund restricțiilor impuse.
7 3 4

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line="1" start="1"> def validare(n, x, y, val):

   # Verifică dacă datele de intrare îndeplinesc condițiile impuse de enunț
   if not (1 <= n <= 20000):
       return False
   if not (1 <= x <= n):
       return False
   if not (1 <= y <= n):
       return False
   if not (1 <= val <= n ** 2):
       return False
   return True


def calculeaza_val(n, x, y, val):

   # Calculează valoarea Val care se află în pătratul n x n la poziția (x, y)
   result_str = str((x - 1) * n + y) + ' '
   # Calculează poziția (i, j) a valorii val în pătratul n x n
   if val % n == 0:
       result_str += str(val // n) + ' ' + str(n)
   else:
       result_str += str(val // n + 1) + ' ' + str(val % n)
   return result_str


if __name__ == "__main__":

   # Citirea datelor de intrare
   n = int(input("n= "))
   x = int(input("x= "))
   y = int(input("y= "))
   val = int(input("val= "))
   # Verificarea datelor de intrare și calculul valorilor cerute
   if validare(n, x, y, val):
       print("Datele de intrare corespund restricțiilor impuse.")
       print(calculeaza_val(n, x, y, val))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>

Explicatie[edit | edit source]

Programul de mai jos determină valoarea V care se află în pătratul n x n la poziția (x, y) și poziția (i, j) a valorii val în pătratul n x n. Funcția validare verifică dacă datele de intrare îndeplinesc condițiile impuse de enunț, iar funcția calculeaza_val calculează valorile cerute în enunț. Programul citește datele de intrare de la tastatură și le trimite apoi la funcția validare pentru a verifica dacă valorile îndeplinesc restricțiile impuse de enunț. Dacă valorile sunt valide, programul calculează valorile cerute prin apelarea funcției calculeaza_val și le afișează pe ecran. Dacă valorile nu sunt valide, programul afișează un mesaj corespunzător pe ecran.