classSolution(object): defstr2vec(self, s): n = len(s) v = [] for end in xrange(n, 0, -UNIT_LEN): start = max(end - UNIT_LEN, 0) v.append(int(s[start: end])) return v
defvec2str(self, vec): fmt = '%%0%dd' % UNIT_LEN ss = [str(vec[len(vec) - 1])] for i in xrange(len(vec) - 2, -1, -1): ss.append(fmt % vec[i]) return''.join(ss)
defmultiply_vec(self, v1, v2): n1 = len(v1) n2 = len(v2) v = [0] * (n1 + n2) for i in xrange(n1): for j in xrange(n2): v[i + j] += v1[i] * v2[j] if v[i + j] >= BASE: v[i + j + 1] += v[i + j] / BASE v[i + j] %= BASE while len(v) > 1and v[-1] == 0: v.pop() return v