3366 - Număr întreg periodic

From Bitnami MediaWiki
Revision as of 13:37, 21 December 2023 by Ramona Dragoș (talk | contribs) (Pagină nouă: == Enunt == Alice a devenit interesată de numere întregi periodice. Spunem că un număr întreg pozitiv X e periodic cu lungimea L dacă există un întreg pozitiv P cu L cifre astfel incat X poate fi scrie ca PPPP...P. De exemplu: Numărul X=123123123 e periodic cu lungimile L=3 (P=123) și L=9 (P=123123123). Numărul X=42424242 e periodic cu lungimile L=2, L=4 și L=8. Numărul X=123445 e periodic cu lungimea L=5. == Cerința == Pentru o perioadă dată de lungime L ș...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Enunt

Alice a devenit interesată de numere întregi periodice. Spunem că un număr întreg pozitiv X e periodic cu lungimea L dacă există un întreg pozitiv P cu L cifre astfel incat X poate fi scrie ca PPPP...P.

De exemplu: Numărul X=123123123 e periodic cu lungimile L=3 (P=123) și L=9 (P=123123123). Numărul X=42424242 e periodic cu lungimile L=2, L=4 și L=8. Numărul X=123445 e periodic cu lungimea L=5.

Cerința

Pentru o perioadă dată de lungime L și un număr întreg pozitiv A, Alice vrea să găsească un număr X strict mai mare ca A astfel încât X sa fie periodic cu lungimea L.

Date de intrare

Fișierul de intrare periodicin.txt va conține pe prima linie numărul L ce reprezintă lungimea perioadei. Pe a doua linie, numărul natural nenul A cu cel mult 100000 de cifre.

Date de ieșire

Fișierul de ieșire periodicout.txt va conține pe prima linie numărul S, reprezentând suma numerelor de pe a doua linie a fișierului de intrare.

Restricții și precizări

  • 1 ⩽ L ⩽ 100000

Exemplu 1

periodicin.txt
3
123456
periodicout.txt
411524115241152
Datele corespund restrictiilor


Exemplu 2

periodicin.txt
0
0
periodicout.txt
Nu au fost respectate cerintele impuse


Rezolvare

<syntaxhighlight lang="python" line> 33366 - Numar intreg periodic def find_periodic_number(L, A):

   # Calculează câte perioade sunt necesare pentru a depăși A
   num_periods = (A + L - 1) // L
   # Construiește numărul periodic
   periodic_number = int(str(num_periods) * L)
   return periodic_number


def main():

   try:
       # Citeste datele de intrare din fisier
       with open("periodicin.txt", "r") as input_file:
           L = int(input_file.readline().strip())
           A = int(input_file.readline().strip())
   except FileNotFoundError:
       print("Fisierul periodicin.txt nu exista.")
       return
   except ValueError:
       print("Datele de intrare nu sunt valide.")
       return
   # Verifică dacă L este în intervalul specificat
   if 1 <= L <= 100000:
       # Găsește numărul periodic
       periodic_result = find_periodic_number(L, A)
       # Scrie rezultatul în fisierul de ieșire
       with open("periodicout.txt", "w") as output_file:
           output_file.write(str(periodic_result) + "\n")
           output_file.write("Datele corespund restrictiilor\n")
   else:
       print("Nu au fost respectate cerintele impuse.")


if __name__ == "__main__":

   main()

</syntaxhighlight>