def zadanie():
a = input()
b = input()
c = input()
n = len(a)
a_rev = a[::-1]
b_rev = b[::-1]
c_rev = c[::-1]
rodzaj = []
for i in range(n):
da = ord(a_rev[i]) - 48
db = ord(b_rev[i]) - 48
dc = ord(c_rev[i]) - 48
d = dc - da - db
if d == 0:
rodzaj.append(0)
elif d == -10:
rodzaj.append(1)
elif d == 1:
rodzaj.append(2)
elif d == -9:
rodzaj.append(3)
else:
rodzaj.append(-1)
wynik = 0
i = 0
while i < n:
if rodzaj[i] == -1 or (rodzaj[i] != 0 and rodzaj[i] != 1):
i += 1
continue
stan = 0
j = i
zero_cnt = 1
while j < n and rodzaj[j] != -1:
if stan == 0:
if rodzaj[j] == 0:
stan = 0
j += 1
if stan == 0:
zero_cnt += 1
elif rodzaj[j] == 1:
stan = 1
j += 1
else:
break
else:
if rodzaj[j] == 2:
stan = 0
j += 1
if stan == 0:
zero_cnt += 1
elif rodzaj[j] == 3:
stan = 1
j += 1
else:
break
wynik += zero_cnt * (zero_cnt - 1) // 2
i = j
print(wynik)
if __name__ == "__main__":
zadanie()
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | def zadanie(): a = input() b = input() c = input() n = len(a) a_rev = a[::-1] b_rev = b[::-1] c_rev = c[::-1] rodzaj = [] for i in range(n): da = ord(a_rev[i]) - 48 db = ord(b_rev[i]) - 48 dc = ord(c_rev[i]) - 48 d = dc - da - db if d == 0: rodzaj.append(0) elif d == -10: rodzaj.append(1) elif d == 1: rodzaj.append(2) elif d == -9: rodzaj.append(3) else: rodzaj.append(-1) wynik = 0 i = 0 while i < n: if rodzaj[i] == -1 or (rodzaj[i] != 0 and rodzaj[i] != 1): i += 1 continue stan = 0 j = i zero_cnt = 1 while j < n and rodzaj[j] != -1: if stan == 0: if rodzaj[j] == 0: stan = 0 j += 1 if stan == 0: zero_cnt += 1 elif rodzaj[j] == 1: stan = 1 j += 1 else: break else: if rodzaj[j] == 2: stan = 0 j += 1 if stan == 0: zero_cnt += 1 elif rodzaj[j] == 3: stan = 1 j += 1 else: break wynik += zero_cnt * (zero_cnt - 1) // 2 i = j print(wynik) if __name__ == "__main__": zadanie() |
English