n = int(input())
bursztyny = list(map(int, input().split()))
suma = sum(bursztyny)
def znajdz_dzielniki(liczba):
lista = []
for kandydat in range(1, int(liczba**0.5) + 1):
if liczba % kandydat == 0:
lista.append(kandydat)
lista.append(liczba//kandydat)
return lista
dzielniki = znajdz_dzielniki(suma)
ile_dzielnikow = len(dzielniki)
def czy_ok(k):
ile = [0] * (n + 1)
aktywne = 0
for i in range(n):
aktywne += ile[i]
if aktywne > bursztyny[i]:
return False
brakuje = bursztyny[i] - aktywne
if brakuje:
if i + k > n:
return False
aktywne += brakuje
ile[i + k] -= brakuje
return True
wynik = 0
for k in range(ile_dzielnikow):
if czy_ok(dzielniki[k]):
wynik = dzielniki[k]
print(wynik)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | n = int(input()) bursztyny = list(map(int, input().split())) suma = sum(bursztyny) def znajdz_dzielniki(liczba): lista = [] for kandydat in range(1, int(liczba**0.5) + 1): if liczba % kandydat == 0: lista.append(kandydat) lista.append(liczba//kandydat) return lista dzielniki = znajdz_dzielniki(suma) ile_dzielnikow = len(dzielniki) def czy_ok(k): ile = [0] * (n + 1) aktywne = 0 for i in range(n): aktywne += ile[i] if aktywne > bursztyny[i]: return False brakuje = bursztyny[i] - aktywne if brakuje: if i + k > n: return False aktywne += brakuje ile[i + k] -= brakuje return True wynik = 0 for k in range(ile_dzielnikow): if czy_ok(dzielniki[k]): wynik = dzielniki[k] print(wynik) |
English