1767 - Multiple: Difference between revisions
Paul Ungur (talk | contribs) Pagină nouă: Sergiu, fiind un elev talentat în ceea ce priveşte informatica, doreşte pe cât posibil să-şi ajute prietenii în rezolvarea problemelor. Prietenii lui au venit la el, fiind foarte confuzi în legătură cu o anumită problemă: Ei au un set de <span style=“color: red”> T</span> întrebări de forma: Care este cel mai mic număr strict mai mare decât <span style=“color: red”> n</span>, divizibil cu <span style=“color: red”> k</span>? Fiind ocupat cu pregăti... |
Paul Ungur (talk | contribs) No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi fișierul de ieșire <span style=“color: red”> multiple.out</span> va conține pe <span style=“color: red”> T</span> linii, pentru fiecare întrebare, numărul cerut. | |||
==Restricții și precizări== | ==Restricții și precizări== | ||
Line 18: | Line 18: | ||
==Exemplu:== | ==Exemplu:== | ||
<span style=“color: red”> multiple.in</span> | <span style=“color: red”> multiple.in</span> | ||
5 | : 5 | ||
1 2 | : 1 2 | ||
3 7 | : 3 7 | ||
24 9 | : 24 9 | ||
13 223 | : 13 223 | ||
45 9 | : 45 9 | ||
: Date de intrare valide | |||
<span style=“color: red”> multiple.out</span> | <span style=“color: red”> multiple.out</span> | ||
2 | : 2 | ||
7 | : 7 | ||
27 | : 27 | ||
223 | : 223 | ||
54 | : 54 | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date(n): | |||
if n < 1 or n > 10000: | |||
print("n trebuie sa fie intre 1 si 10000") | |||
return False | |||
return True | |||
def multiple(n): | |||
int | for i in range(n): | ||
a, b = map(int, fin.readline().strip().split()) | |||
if a == b: | |||
fout.write(str(2 * b) + "\n") | |||
elif a < b: | |||
fout.write(str(b) + "\n") | |||
else: | |||
fout.write(str(b - (a % b) + a) + "\n") | |||
fin.close() | |||
fout.close() | |||
if __name__ == '__main__': | |||
fin = open("multiple.in") | |||
fout = open("multiple.out", "w") | |||
n = int(fin.readline().strip()) | |||
if validare_date(n): | |||
print("Date de intrare valide") | |||
multiple(n) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicatie cod:== | |||
==Explicatie== | Funcția validare_date(n) primește un număr n și verifică dacă acesta se încadrează în intervalul [1, 10000]. Dacă n nu respectă această condiție, se afișează un mesaj de eroare și funcția returnează False. În caz contrar, returnează True. | ||
Funcția multiple(n) primește un număr n și efectuează un set de operații pentru n iterații. În fiecare iterație, se citesc două numere a și b folosind funcția fin.readline().strip().split(). Apoi, se efectuează următoarele verificări: | |||
Dacă a este egal cu b, se înmulțește b cu 2 și rezultatul este scris în fișierul de ieșire. | |||
Dacă | Dacă a este mai mic decât b, se scrie b în fișierul de ieșire. | ||
Dacă a este mai mare decât b, se calculează diferența b - (a % b) + a și rezultatul este scris în fișierul de ieșire. | |||
În blocul if __name__ == '__main__':, se deschid fișierele de intrare și de ieșire (multiple.in și multiple.out). Se citește prima linie din fișierul de intrare pentru a obține n. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare_date(). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția multiple() și se efectuează operațiile pentru n iterații. În final, se închid fișierele de intrare și de ieșire. | |||
Codul primește date de intrare din fișierul "multiple.in", validează datele și efectuează operații pentru n iterații, în funcție de valorile citite din fișier. Rezultatele sunt scrise în fișierul "multiple.out". |
Latest revision as of 18:58, 29 June 2023
Sergiu, fiind un elev talentat în ceea ce priveşte informatica, doreşte pe cât posibil să-şi ajute prietenii în rezolvarea problemelor. Prietenii lui au venit la el, fiind foarte confuzi în legătură cu o anumită problemă: Ei au un set de T întrebări de forma: Care este cel mai mic număr strict mai mare decât n, divizibil cu k? Fiind ocupat cu pregătirea pentru OJI, el vă roagă pe voi să-l ajutaţi!
Cerința[edit | edit source]
Pentru fiecare din cele T întrebări, să se afle cel mai mic număr strict mai mare decât n care este divizibil cu k.
Date de intrare[edit | edit source]
Fișierul de intrare multiple.in conține pe prima linie numărul T, iar următoarele T linii conţin câte două numere, n şi k, cu semnificaţia din enunţ.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide.", apoi fișierul de ieșire multiple.out va conține pe T linii, pentru fiecare întrebare, numărul cerut.
Restricții și precizări[edit | edit source]
1 ≤ T ≤ 10000 se recomandă utilizarea tipurilor de date pe 8 octeţi (64 de biţi) dacă reuşiţi să-l ajutaţi pe Sergiu, pe lângă cele 100 de puncte, probabil el vă va face cinste şi cu o sticlă de apă minerală
Exemplu:[edit | edit source]
multiple.in
- 5
- 1 2
- 3 7
- 24 9
- 13 223
- 45 9
- Date de intrare valide
multiple.out
- 2
- 7
- 27
- 223
- 54
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(n):
if n < 1 or n > 10000: print("n trebuie sa fie intre 1 si 10000") return False return True
def multiple(n):
for i in range(n): a, b = map(int, fin.readline().strip().split()) if a == b: fout.write(str(2 * b) + "\n") elif a < b: fout.write(str(b) + "\n") else: fout.write(str(b - (a % b) + a) + "\n") fin.close() fout.close()
if __name__ == '__main__':
fin = open("multiple.in") fout = open("multiple.out", "w")
n = int(fin.readline().strip()) if validare_date(n): print("Date de intrare valide") multiple(n)
</syntaxhighlight>
Explicatie cod:[edit | edit source]
Funcția validare_date(n) primește un număr n și verifică dacă acesta se încadrează în intervalul [1, 10000]. Dacă n nu respectă această condiție, se afișează un mesaj de eroare și funcția returnează False. În caz contrar, returnează True. Funcția multiple(n) primește un număr n și efectuează un set de operații pentru n iterații. În fiecare iterație, se citesc două numere a și b folosind funcția fin.readline().strip().split(). Apoi, se efectuează următoarele verificări: Dacă a este egal cu b, se înmulțește b cu 2 și rezultatul este scris în fișierul de ieșire. Dacă a este mai mic decât b, se scrie b în fișierul de ieșire. Dacă a este mai mare decât b, se calculează diferența b - (a % b) + a și rezultatul este scris în fișierul de ieșire. În blocul if __name__ == '__main__':, se deschid fișierele de intrare și de ieșire (multiple.in și multiple.out). Se citește prima linie din fișierul de intrare pentru a obține n. Apoi, se verifică dacă datele de intrare sunt valide utilizând funcția validare_date(). Dacă datele sunt valide, se afișează un mesaj de confirmare, se apelează funcția multiple() și se efectuează operațiile pentru n iterații. În final, se închid fișierele de intrare și de ieșire. Codul primește date de intrare din fișierul "multiple.in", validează datele și efectuează operații pentru n iterații, în funcție de valorile citite din fișier. Rezultatele sunt scrise în fișierul "multiple.out".