2248 - Coordonate: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== 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 '''n^2''', 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ți...
 
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
==Cerință==
==Cerință==
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 '''n^2''', ca în exemplul de mai jos în care '''n''' = 4:
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 '''<math>n^2</math>''', ca în exemplul de mai jos în care '''n''' = 4:


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


==Date de intrare==
==Date de intrare==
Programul citește de la tastatură numerele '''n, x, y, val''', separate prin spații.
Programul citește de la tastatură numerele '''n, x, y, val''' pe linii separate.


==Date de ieșire==
==Date de ieșire==
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.
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==
==Restricții și precizări==
*1 ≤ '''n''' ≤ 20000
*1 ≤ '''n''' ≤ 20000
*1 ≤ '''x''', '''y''' ≤ '''n'''
*1 ≤ '''x''', '''y''' ≤ '''n'''
*1 ≤ '''val''' ≤ '''n^2'''
*1 ≤ '''val''' ≤ '''<math>n^2</math>'''


==Exemplul 1==
==Exemplul 1==
;Intrare
;Intrare


:4 2 3 12
:4  
:2  
:3  
:12


;Ieșire
;Ieșire
 
:Datele de intrare corespund restricțiilor impuse.
:7 3 4
:7 3 4



Latest revision as of 18:08, 22 April 2023

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.