2448 - Pătrate3: Diferență între versiuni

De la Universitas MediaWiki
Linia 13: Linia 13:


== Restricţii şi precizări ==
== Restricţii şi precizări ==
* 3 ⩽ '''n''' ⩽ 2000
* 1 ⩽ '''n''' ⩽ 20000
* 2 ⩽ '''p''' ⩽ 1000
* 1 ⩽ '''x, y''' ⩽ '''n'''
* numerele de pe cartonaşele elevilor sunt nenule şi mai mici decât 1001
* 1 ⩽ '''val''' ⩽ n^2
* există cel puţin un număr divizibil cu p pe un cartonaş


== Exemplul 1 ==
== Exemplul 1 ==

Versiunea de la data 9 aprilie 2023 12:24

Sursa: [1]

Cerinţa

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

Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și 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 programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor.".

Restricţii şi precizări

  • 1 ⩽ n ⩽ 20000
  • 1 ⩽ x, yn
  • 1 ⩽ val ⩽ n^2

Exemplul 1

Intrare
grupapregatitoare.in
3 7
1 2
21 4
5 6
Ieșire
grupapregatitoare.out
29
3


Exemplul 2

Intrare
grupapregatitoare.in
100000000 1000000
1 2
21 4
5 6
Ieșire
grupapregatitoare.out
Datele introduse nu corespund cerintelor.


Rezolvare

#2248
def is_valid_input(n, x, y, v):
    if not (1 <= n <= 20000):
        print("Datele introduse nu corespund cerintelor.")
        exit()
    if not (1 <= x <= n) or not (1 <= y <= n):
        print("Datele introduse nu corespund cerintelor.")
        exit()
    if not (1 <= v <= n ** 2):
        print("Datele introduse nu corespund cerintelor.")
        exit()
    return True


def calculate_coordinates(n, x, y, v):
    # Verifică dacă intrările sunt valide
    if not is_valid_input(n, x, y, v):
        return None

    # Calculează coordonatele folosind formulele din program
    coord_x = (x - 1) * n + y
    coord_y = v // n if v % n == 0 else v // n + 1
    coord_z = n if v % n == 0 else v % n

    return (coord_x, coord_y, coord_z)


def main():
    n = int(input())
    x = int(input())
    y = int(input())
    v = int(input())

    # Calculează coordonatele folosind funcția definită anterior
    coords = calculate_coordinates(n, x, y, v)

    if coords is None:
        print("Input invalid")
    else:
        # Afișează coordonatele separate printr-un spațiu
        print("Datele introduse corespund cerintelor.")
        print(coords[0], coords[1], coords[2])


main()

Explicatie rezolvare