2112 - Tablita: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
No edit summary
Paul Ungur (talk | contribs)
No edit summary
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:


==Date de ieșire==
==Date de ieșire==
Fişierul de ieşire tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul <span style=“color: red”> N</span>, înscris pe a cincea tabliţă găsită.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Date de intrare valide."''', apoi fişierul de ieşire tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul <span style=“color: red”> N</span>, înscris pe a cincea tabliţă găsită. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Date de intrare invalide".'''


==Restricții și precizări==
==Restricții și precizări==
Line 15: Line 15:
==Exemplu:==
==Exemplu:==
<span style=“color: red”> tablita.in</span>
<span style=“color: red”> tablita.in</span>
100
: 100


Iesire
: Date de intrare valide
<span style=“color: red”> tablita.out</span>
<span style=“color: red”> tablita.out</span>
14
: 14


==Explicație==
==Explicație==
Line 55: Line 57:
     fout.close()
     fout.close()
</syntaxhighlight>
</syntaxhighlight>
==Explicatie cod:==
validare(n): Această funcție primește un număr întreg n și verifică dacă acesta se află în intervalul specificat, adică între 1 și 100.000.000. Dacă n nu se află în acest interval, funcția returnează False, altfel returnează True.
tablita(n): Această funcție primește un număr întreg n și calculează valoarea cnt reprezentând numărul de iterații necesare pentru a ajunge la x >= n. Inițial, x este setat la 1 și cnt este setat la 1. Apoi, se crește cnt cu 1 și se adaugă valoarea cnt la x până când x devine mai mare sau egal cu n. La final, rezultatul cnt este scris în fișierul "tablita.out".
În blocul __main__, se deschide fișierul de intrare "tablita.in" pentru citire și fișierul de ieșire "tablita.out" pentru scriere. Se citește numărul n din fișierul de intrare și se validează folosind funcția validare(). Dacă n este valid, se afișează "Date de intrare valide" și se apelează funcția tablita(n) pentru a calcula rezultatul și a-l scrie în fișierul de ieșire. În caz contrar, se afișează "Date de intrare invalide". La final, fișierele de intrare și de ieșire sunt închise.

Latest revision as of 19:10, 29 June 2023

Adrian participă la o expediţie, împreună cu colegii lui. La un moment dat, copiii descoperă, lângă un copac, 5 tăbliţe vechi. Primele 4 tăbliţe sunt inscripţionate complet. Prima tăbliţă conţinea textul : “Grupa 1 conţine numărul 1”, a doua tăbliţă avea textul : „Grupa 2 conţine numerele 2 şi 3”, a treia tăbliţă avea textul: „Grupa 3 contine numerele 4, 5 şi 6” , a patra tăbliţă avea textul: „Grupa 4 conţine numerele 7, 8, 9 şi 10.” Pe următoarea tăbliţă găsită era înscris un singur număr, celelalte numere şi numărul grupei erau şterse. Adrian le solicită colegilor lui să descopere ce grupă era scrisă pe a cincea tabliţă găsită.

Cerința[edit | edit source]

Descoperiţi regula de inscripţionare a tăbliţelor şi pentru numărul găsit pe a cincea tăbliţă, determinaţi din ce grupă face parte.

Date de intrare[edit | edit source]

Fişierul de intrare tablita.in conţine pe prima linie un număr natural N, ce reprezintă numărul care era înscris pe a cincea tăbliţă descoperită de Adrian.

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 tablita.out va conţine un număr natural ce reprezintă grupa în care se află numărul N, înscris pe a cincea tabliţă găsită. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Date de intrare invalide".

Restricții și precizări[edit | edit source]

Un număr înscris pe o tăbliţă este nenul şi conţine cel mult 8 cifre;

Exemplu:[edit | edit source]

tablita.in

100

Iesire

Date de intrare valide

tablita.out

14

Explicație[edit | edit source]

Numărul 100 ce apare pe a cincea tăbliţă face parte din grupa 14.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare(n):

   if not (1 <= n <= 100_000_000):
       return False
   return True


def tablita(n):

   x, cnt = 1, 1
   while x < n:
       cnt += 1
       x += cnt
   with open("tablita.out", "w") as fout:
       fout.write(str(cnt))


if __name__ == '__main__':

   fin = open("tablita.in")
   fout = open("tablita.out", "w")
   n = int(fin.readline())
   if validare(n):
       print("Date de intrare valide")
       tablita(n)
   else:
       print("Date de intrare invalide")
   fin.close()
   fout.close()

</syntaxhighlight>

Explicatie cod:[edit | edit source]

validare(n): Această funcție primește un număr întreg n și verifică dacă acesta se află în intervalul specificat, adică între 1 și 100.000.000. Dacă n nu se află în acest interval, funcția returnează False, altfel returnează True. tablita(n): Această funcție primește un număr întreg n și calculează valoarea cnt reprezentând numărul de iterații necesare pentru a ajunge la x >= n. Inițial, x este setat la 1 și cnt este setat la 1. Apoi, se crește cnt cu 1 și se adaugă valoarea cnt la x până când x devine mai mare sau egal cu n. La final, rezultatul cnt este scris în fișierul "tablita.out". În blocul __main__, se deschide fișierul de intrare "tablita.in" pentru citire și fișierul de ieșire "tablita.out" pentru scriere. Se citește numărul n din fișierul de intrare și se validează folosind funcția validare(). Dacă n este valid, se afișează "Date de intrare valide" și se apelează funcția tablita(n) pentru a calcula rezultatul și a-l scrie în fișierul de ieșire. În caz contrar, se afișează "Date de intrare invalide". La final, fișierele de intrare și de ieșire sunt închise.