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, separate prin spații.
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
<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
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.