만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

N진수 곱셈 (HUGE)

시간 제한10초메모리 제한1024 MB

요약
밑 N으로 적힌 두 정수 A와 B를 곱하고, 결과를 밑 N으로 출력합니다. N은 음수일 수 있고, 각 수는 최대 3,000,000자리입니다.
난이도

보통10점 중 7점

유형
문자열, 수학, 구현
정답자
아직 제출이 없습니다

문제

이 문제는 N진수 곱셈 (tiny)과 비교해 AA와 BB의 길이 제한만 다르다.

NN진법으로 표현된 두 정수 AA, BB를 곱하는 프로그램을 작성하자.

AA와 BB를 표현할 때 각 자리의 수는 ASCII 순서대로 문자에 대응시킨다. 00은 33번 문자인 !로, 11은 34번 문자인 "로, 이런 식으로 ii는 33+i33+i번 문자로 표현한다. 음수는 ~(ASCII 코드 126126번)로 표시하며, NN이 양수일 때만 맨 앞 글자에 최대 한 번 나타난다.

각 자리를 표기하기 위한 ASCII 문자 대응표

아래는 앞에서 설명한 방식으로 수를 표현한 예이다. 이해를 돕기 위해 각 자리의 숫자를 대괄호로 감쌌다.

\[1]\[2]\[5]_(10)=\[1]\[2]\[5]\_{(10)}="#&

−\[1]\[2]\[16]_(27)=-\[1]\[2]\[16]\_{(27)}=~"#1

\[9]\[0]\[12]_(−15)=\[9]\[0]\[12]\_{(-15)}=*!-

\[43]\[52]\[44]\[40]_(69)=\[43]\[52]\[44]\[40]\_{(69)}=LUMI

NN은 음의 정수일 수 있다. 음의 정수 진법은 힌트에서 설명한다.

입력

첫 번째 줄에 진법의 밑 N(2≤∣N∣≤93)N(2 \le |N| \le 93)이 주어진다.

두 번째 줄과 세 번째 줄에는 NN진법으로 표현된 AA, BB가 각각 주어진다. AA와 BB는 NN진법으로 표현했을 때 3 000 0003\,000\,000자를 넘지 않는다.

AA나 BB의 앞에 불필요한 !는 붙어 있지 않다. ~는 NN이 양의 정수일 때만 나오며, 맨 앞에 최대 한 번 나온다. NN은 음의 정수일 수 있으니 유의한다.

출력

AA와 BB를 곱한 값을 NN진법으로 출력한다.

힌트

음의 정수 NN인 경우에도 NN진법은 양의 정수 진법과 마찬가지로, 왼쪽으로 한 자리 넘어갈 때마다 값이 NN배가 된다. 다만 각 자리에 들어가는 숫자의 범위는 0≤x<−N0 \le x \lt -N으로 한정한다.

예를 들어 1010진법의 9 9039\,903은 −10-10진법으로 11 90311\,903이 된다.

11 903(−10)=1×(−10)4+1×(−10)3+9×(−10)2+0×(−10)1+3×(−10)0=9 903(10)11\,903_{(-10)} = 1 \times (-10) ^ 4 + 1 \times (-10) ^ 3 + 9 \times (-10) ^ 2 + 0 \times (-10) ^ 1 + 3 \times (-10) ^ 0 = 9\,903_{(10)}.

예제3

  1. 예제 1

    입력
    69
    TOCA
    LUMI
    
    예상 출력
    AV<_E$;G
    
  2. 예제 2

    입력
    -90
    Pl3453_5h4k3-C4rr075
    1f-Y0u-F33l-7hr3473n3d
    
    예상 출력
    "tkZAW&?="GL37Gz&W4*F[OkOr17Usc`E(.0_0^fJ5q
    
  3. 예제 3

    입력
    87
    ~Diving_Into_Firewall_and_Find_Your_Code
    Waiting_For_Your_Code-Accessing_"THE_VIOLET"!
    
    예상 출력
    ~7Q"#=VgLj6YR\g,WRrPg+;n3UauemVK[aDYAGlkGII#0jNs5XMhS@cY)r4Jv`$2\_UJs\q\v;Rte2!55dXe!