2448 - Pătrate3
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
Fișierul de intrare grupapregatitoare.in conține pe prima linie numerele n şi p, iar pe următoarele n linii câte două numere naturale reprezentând numerele de pe cartonaşele fiecărui elev, în ordinea în care s-au aşezat pe cerc
Date de ieșire
Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" si fișierul de ieșire grupapregatitoare.out va conține pe prima linie numărul S, iar pe a doua linie numărul L. În caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor.".
Restricţii şi precizări
- 3 ⩽ n ⩽ 2000
- 2 ⩽ p ⩽ 1000
- numerele de pe cartonaşele elevilor sunt nenule şi mai mici decât 1001
- există cel puţin un număr divizibil cu p pe un cartonaş
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
<syntaxhighlight lang="python" line>
- 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()
</syntaxhighlight>