3366 - Număr întreg periodic: Difference between revisions
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''' | ||
: | :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): | ||
period = "1" + "0" * (L - 1) | |||
X = int(period) | |||
while X <= A: | |||
X += int(period) | |||
return X | |||
return | |||
def main(): | 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__": | 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>