1912 - Becuri
Cerința[edit | edit source]
Chris vă propune un joc cu becuri.
- în joc sunt n becuri
- inițial toate cele n becuri au culoarea albastru
- fiecare bec poate avea doar două culori: roșu sau albastru
- se efectuează n parcurgeri, pentru k de la 1 la n. La parcurgerea de rang k, se schimbă culoarea fiecărui bec situat pe poziţii având indicii multipli de k, din roşu în albastru şi invers.
Știind numărul n de becuri, să se afișeze numărul de becuri care au culoarea roșie după terminarea jocului.
Date de intrare[edit | edit source]
Fișierul de intrare becuriin.txt conține pe prima linie numărul de becuri n.
Date de ieșire[edit | edit source]
Fișierul de ieșire becuriout.txt va conține pe prima linie numărul de becuri care au culoarea roșie după terminarea jocului.
Restricții și precizări[edit | edit source]
- numerotarea pozițiilor becurilor începe cu 1
- 1 ⩽ n ⩽ 10^9
Exemplul 1[edit | edit source]
- Intrare
- becuriin.txt
- 6
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- becuriout.txt
- 2
Exemplul 2[edit | edit source]
- Intrare
- becuriin.txt
- 10
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- becuriout.txt
- 3
Exemplul 3[edit | edit source]
- Intrare
- becuriin.txt
- 18
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- becuriout.txt
- 4
Exemplul 4[edit | edit source]
- Intrare
- becuriin.txt
- 0
- Ieșire
- Datele de intrare NU corespund restricțiilor impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 1912 - Becuri
def validare_date(n):
if not (1 <= n <= 10**9): return False return True
def numar_becuri_rosii(n):
becuri = [0] * (n + 1)
for k in range(1, n + 1): for i in range(k, n + 1, k): becuri[i] = 1 - becuri[i]
return sum(becuri)
with open("becuriin.txt", "r") as f:
n = int(f.readline().strip())
if validare_date(n):
print("Datele de intrare corespund restricțiilor impuse")
rezultat = numar_becuri_rosii(n) with open("becuriout.txt", "w") as f: f.write(str(rezultat) + "\n")
else:
print("Datele de intrare NU corespund restricțiilor impuse") exit(0)
</syntaxhighlight>