2248 - Coordonate

De la Universitas MediaWiki

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, yn
  • 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.