# utwórz BUC na podstawie wejściowego ciągu:
def BUC(a):
n = len(a)
buc = []
for i in range(n):
for j in range(i, n):
buc.append(sum(a[i:j+1]))
return buc
def satbuc(a):
# 2. Oblicz BUC
buc = sorted(BUC(a))
# 3. Oblicz liczbę trójek sumujących się do 0
count = 0
n = len(buc)
freq = {}
for i in reversed(range(0, n-2)): # -buc[i] = buc[j] + buc[k]
for j in range(i+2, n):
z = buc[i+1] + buc[j]
freq[z] = freq.get(z, 0) + 1
count += freq.get(-buc[i], 0)
return count
# 1. Wczytaj dane
n = int(input())
a = list(map(int, input().split()))
print(satbuc(a))
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 | # utwórz BUC na podstawie wejściowego ciągu: def BUC(a): n = len(a) buc = [] for i in range(n): for j in range(i, n): buc.append(sum(a[i:j+1])) return buc def satbuc(a): # 2. Oblicz BUC buc = sorted(BUC(a)) # 3. Oblicz liczbę trójek sumujących się do 0 count = 0 n = len(buc) freq = {} for i in reversed(range(0, n-2)): # -buc[i] = buc[j] + buc[k] for j in range(i+2, n): z = buc[i+1] + buc[j] freq[z] = freq.get(z, 0) + 1 count += freq.get(-buc[i], 0) return count # 1. Wczytaj dane n = int(input()) a = list(map(int, input().split())) print(satbuc(a)) |
English