목차

fft.py

multiply

코드

# N multiply
# I {"version": "2.0", "import": ["decimal"], "typing": ["List", "Sequence"]}
def multiply(a: Sequence[int], b: Sequence[int], digit: int = 0) -> List[int]:
    """Returns the multiplication of two polynomials."""
    decimal.setcontext(
        decimal.Context(prec=decimal.MAX_PREC, Emax=decimal.MAX_EMAX))
    if digit == 0:
        digit = min(20, len(str(min(len(a), len(b)) * max(a) * max(b))))
    f = f'0{digit}d'
    a_dec = decimal.Decimal(''.join(format(x, f) for x in a))
    b_dec = decimal.Decimal(''.join(format(x, f) for x in b))
    c_dec = a_dec * b_dec
    total_digit = digit * (len(a) + len(b) - 1)
    c = format(c_dec, f'0{total_digit}f')
    return [int(c[i:i + digit]) for i in range(0, total_digit, digit)]

설명

이 코드를 사용하는 문제

출처문제 번호Page레벨
BOJ10531Golf Bot플래티넘 2
BOJ1067이동플래티넘 2
BOJ11385씽크스몰다이아몬드 3
BOJ13575보석 가게플래티넘 1
BOJ17104골드바흐 파티션 2다이아몬드 5
BOJ17134르모앙의 추측플래티넘 1
BOJ5051피타고라스의 정리다이아몬드 5