1767 - Multiple: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
No edit summary
Paul Ungur (talk | contribs)
No edit summary
Line 63: Line 63:
         multiple(n)
         multiple(n)
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
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".

Revision as of 17:22, 15 May 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

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

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

Fișierul de ieșire multiple.out va conține pe T linii, pentru fiecare întrebare, numărul cerut.

Restricții și precizări

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:

multiple.in 5 1 2 3 7 24 9 13 223 45 9

multiple.out 2 7 27 223 54

Rezolvare

<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:

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".