3366 - Număr întreg periodic: Difference between revisions

From Bitnami MediaWiki
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 ș...
 
No edit summary
 
Line 1: Line 1:
== Enunt ==
== Enunt ==


Alice a devenit interesată de numere întregi periodice.
'''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.
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.
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 ==
== 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.
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 ==
== 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.
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 ==
== 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.
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 ==
== Restricții și precizări ==
*1 ⩽ L ⩽ 100000
*'''1 ⩽ L ⩽ 100000'''
== Exemplu 1 ==
== Exemplu 1 ==
;periodicin.txt
;'''periodicin.txt'''
:3
:3
:123456
:123456
;periodicout.txt
;'''periodicout.txt'''
:411524115241152
:124124
:Datele corespund restrictiilor
:Datele corespund restrictiilor
<br>
<br>
== Exemplu 2 ==
== Exemplu 2 ==
;periodicin.txt
;'''periodicin.txt'''
:3
:12345
;'''periodicout.txt'''
:100100
:Datele corespund restrictiilor
<br>
== Exemplu 3 ==
;'''periodicin.txt'''
:0
:0
:0
:0
;periodicout.txt
;'''periodicout.txt'''
: Nu au fost respectate cerintele impuse
: Nu au fost respectate cerintele impuse
<br>
<br>
Line 31: Line 39:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
33366 - Numar intreg periodic
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):
def find_periodic_number(L, A):
     # Calculează câte perioade sunt necesare pentru a depăși A
     period = "1" + "0" * (L - 1)
    num_periods = (A + L - 1) // L
    X = int(period)
 
     while X <= A:
     # Construiește numărul periodic
        X += int(period)
    periodic_number = int(str(num_periods) * L)
     return X
 
     return periodic_number
 


def main():
def main():
     try:
     with open("periodicin.txt", "r") as file_in, open("periodicout.txt", "w") as file_out:
        # Citeste datele de intrare din fisier
        L = int(file_in.readline().strip())
        with open("periodicin.txt", "r") as input_file:
        A = int(file_in.readline().strip())
            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 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__":
if __name__ == "__main__":

Latest revision as of 13:19, 6 January 2024

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>