3366 - Număr întreg periodic

From Bitnami MediaWiki
Revision as of 13:19, 6 January 2024 by Ramona Dragoș (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Enunt[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 1 ⩽ L ⩽ 100000

Exemplu 1[edit | edit source]

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


Exemplu 2[edit | edit source]

periodicin.txt
3
12345
periodicout.txt
100100
Datele corespund restrictiilor


Exemplu 3[edit | edit source]

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


Rezolvare[edit | edit source]

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

   return 1 <= L <= 100000 and 0 < A < 10**100000

def find_periodic_number(L, A):

   period = "1" + "0" * (L - 1)
   X = int(period)
   while X <= A:
       X += int(period)
   return X

def main():

   with open("periodicin.txt", "r") as file_in, open("periodicout.txt", "w") as file_out:
       L = int(file_in.readline().strip())
       A = int(file_in.readline().strip())
       if is_valid_input(L, A):
           result = find_periodic_number(L, A)
           file_out.write(str(result) + "\n")
           file_out.write("Datele corespund restrictiilor\n")
       else:
           file_out.write("Nu au fost respectate cerintele impuse\n")

if __name__ == "__main__":

   main()

</syntaxhighlight>