Броничев Александр 321 AsyncPoly 11660
Кибизов Кирилл 321 AsyncPoly 10551
f1import sysf1import sys
2import asyncio2import asyncio
33
4class YesFuture:4class YesFuture:
55
n6    def __init__(self, val=None):n6    def __init__(self, value=None):
7        self.val = val7        self.value = value
88
n9    def set(self, val):n9    def set(self, value):
10        self.val = val10        self.value = value
1111
12    def __await__(self):12    def __await__(self):
1313
14        async def _():14        async def _():
n15            return self.valn15            return self.value
16        return _().__await__()16        return _().__await__()
17SUP = {'⁰': 0, '¹': 1, '²': 2, '³': 3, '⁴': 4, '⁵': 5, '⁶': 6, '⁷': 7, '17SUP = {'⁰': 0, '¹': 1, '²': 2, '³': 3, '⁴': 4, '⁵': 5, '⁶': 6, '⁷': 7, '
>⁸': 8, '⁹': 9}>⁸': 8, '⁹': 9}
1818
19def parse_poly(poly, x):19def parse_poly(poly, x):
20    s = poly.replace(' ', '')20    s = poly.replace(' ', '')
21    terms = []21    terms = []
22    i = 022    i = 0
23    sign = 123    sign = 1
24    if s and s[0] in '+-':24    if s and s[0] in '+-':
25        sign = 1 if s[0] == '+' else -125        sign = 1 if s[0] == '+' else -1
26        i = 126        i = 1
n27    start = in27    st = i
28    while i < len(s):28    while i < len(s):
29        if s[i] in '+-':29        if s[i] in '+-':
n30            terms.append((sign, s[start:i]))n30            terms.append((sign, s[st:i]))
31            sign = 1 if s[i] == '+' else -131            sign = 1 if s[i] == '+' else -1
32            i += 132            i += 1
n33            start = in33            st = i
34        else:34        else:
35            i += 135            i += 1
n36    terms.append((sign, s[start:]))n36    terms.append((sign, s[st:]))
37    coeff_power = []37    parsed = []
38    for sign, term in terms:38    for sign, t in terms:
39        if 'x' in term:39        if 'x' in t:
40            p = term.index('x')40            p = t.index('x')
41            coeff_str = term[:p]41            c = t[:p]
42            pow_str = term[p + 1:]42            powp = t[p + 1:]
43            coeff = int(coeff_str) if coeff_str else 143            c = int(c) if c else 1
44            if pow_str:44            if powp:
45                power = 045                pw = 0
46                for ch in pow_str:46                for ch in powp:
47                    power = power * 10 + SUP[ch]47                    pw = pw * 10 + SUP[ch]
48            else:48            else:
n49                power = 1n49                pw = 1
50            coeff_power.append((sign * coeff, power))50            parsed.append((sign * c, pw))
51        else:51        else:
n52            coeff_power.append((sign * int(term), 0))n52            parsed.append((sign * int(t), 0))
5353
54    def C(v):54    def C(v):
55        return YesFuture(v)55        return YesFuture(v)
56    exprs = []56    exprs = []
n57    for coeff, power in coeff_power:n57    for c, pw in parsed:
58        if power == 0:58        if pw == 0:
59            term = C(coeff)59            term = C(c)
60        elif power == 1:60        elif pw == 1:
61            term = x if coeff == 1 else ns['Mul'](C(coeff), x)61            term = x if c == 1 else namespace['Mul'](C(c), x)
62        else:62        else:
n63            pow_expr = ns['Pow'](x, C(power))n63            pexpr = namespace['Pow'](x, C(pw))
64            term = pow_expr if coeff == 1 else ns['Mul'](C(coeff), pow_e64            term = pexpr if c == 1 else namespace['Mul'](C(c), pexpr)
>xpr) 
65        exprs.append(term)65        exprs.append(term)
n66    expr = exprs[0]n66    e = exprs[0]
67    for term in exprs[1:]:67    for t in exprs[1:]:
68        expr = ns['Sum'](expr, term)68        e = namespace['Sum'](e, t)
6969
70    async def evaluate():70    async def evaluate():
n71        return await exprn71        return await e
72    return evaluate()72    return evaluate()
73code = sys.stdin.read()73code = sys.stdin.read()
t74ns = {'YesFuture': YesFuture, 'parse_poly': parse_poly, 'asyncio': asynct74namespace = {'YesFuture': YesFuture, 'parse_poly': parse_poly, 'asyncio'
>io}>: asyncio}
75exec(code, ns)75exec(code, namespace)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op