Кибизов Кирилл 321 AsyncPoly 10551
Броничев Александр 321 AsyncPoly 11660
f1import sysf1import sys
2import asyncio2import asyncio
33
4class YesFuture:4class YesFuture:
55
n6    def __init__(self, value=None):n6    def __init__(self, val=None):
7        self.value = value7        self.val = val
88
n9    def set(self, value):n9    def set(self, val):
10        self.value = value10        self.val = val
1111
12    def __await__(self):12    def __await__(self):
1313
14        async def _():14        async def _():
n15            return self.valuen15            return self.val
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    st = in27    start = 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[st:i]))n30            terms.append((sign, s[start:i]))
31            sign = 1 if s[i] == '+' else -131            sign = 1 if s[i] == '+' else -1
32            i += 132            i += 1
n33            st = in33            start = i
34        else:34        else:
35            i += 135            i += 1
n36    terms.append((sign, s[st:]))n36    terms.append((sign, s[start:]))
37    parsed = []37    coeff_power = []
38    for sign, t in terms:38    for sign, term in terms:
39        if 'x' in t:39        if 'x' in term:
40            p = t.index('x')40            p = term.index('x')
41            c = t[:p]41            coeff_str = term[:p]
42            powp = t[p + 1:]42            pow_str = term[p + 1:]
43            c = int(c) if c else 143            coeff = int(coeff_str) if coeff_str else 1
44            if powp:44            if pow_str:
45                pw = 045                power = 0
46                for ch in powp:46                for ch in pow_str:
47                    pw = pw * 10 + SUP[ch]47                    power = power * 10 + SUP[ch]
48            else:48            else:
n49                pw = 1n49                power = 1
50            parsed.append((sign * c, pw))50            coeff_power.append((sign * coeff, power))
51        else:51        else:
n52            parsed.append((sign * int(t), 0))n52            coeff_power.append((sign * int(term), 0))
5353
54    def C(v):54    def C(v):
55        return YesFuture(v)55        return YesFuture(v)
56    exprs = []56    exprs = []
n57    for c, pw in parsed:n57    for coeff, power in coeff_power:
58        if pw == 0:58        if power == 0:
59            term = C(c)59            term = C(coeff)
60        elif pw == 1:60        elif power == 1:
61            term = x if c == 1 else namespace['Mul'](C(c), x)61            term = x if coeff == 1 else ns['Mul'](C(coeff), x)
62        else:62        else:
n63            pexpr = namespace['Pow'](x, C(pw))n63            pow_expr = ns['Pow'](x, C(power))
64            term = pexpr if c == 1 else namespace['Mul'](C(c), pexpr)64            term = pow_expr if coeff == 1 else ns['Mul'](C(coeff), pow_e
 >xpr)
65        exprs.append(term)65        exprs.append(term)
n66    e = exprs[0]n66    expr = exprs[0]
67    for t in exprs[1:]:67    for term in exprs[1:]:
68        e = namespace['Sum'](e, t)68        expr = ns['Sum'](expr, term)
6969
70    async def evaluate():70    async def evaluate():
n71        return await en71        return await expr
72    return evaluate()72    return evaluate()
73code = sys.stdin.read()73code = sys.stdin.read()
t74namespace = {'YesFuture': YesFuture, 'parse_poly': parse_poly, 'asyncio't74ns = {'YesFuture': YesFuture, 'parse_poly': parse_poly, 'asyncio': async
>: asyncio}>io}
75exec(code, namespace)75exec(code, ns)
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op