2448 - Pătrate3: Difference between revisions
Dragos1234 (talk | contribs) No edit summary |
Dragos1234 (talk | contribs) |
||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/2248/coordonate] | Sursa: [https://www.pbinfo.ro/probleme/2248/coordonate] | ||
== Cerinţa == | == 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 == | == 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 | 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 |
Revision as of 12:21, 9 April 2023
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>