2248 - Coordonate
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 , 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
Programul citește de la tastatură numerele n, x, y, val pe linii separate.
Date de ieșire
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
- 1 ≤ n ≤ 20000
- 1 ≤ x, y ≤ n
- 1 ≤ val ≤
Exemplul 1
- Intrare
- 4
- 2
- 3
- 12
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 7 3 4
Rezolvare
Rezolvare ver. 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.")
Explicatie
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.