N진수 곱셈 (HUGE)

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

요약
N진법(N은 음수일 수 있고 각 자리는 출력 가능한 ASCII 문자)으로 주어진 두 정수를 곱해 같은 진법으로 출력한다. 입력은 최대 300만 자리까지 가능하다.
난이도

어려움10점 중 8점

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

문제

이 문제는 N진수 곱셈 (tiny)와 AA와 BB의 길이 제한만 다른 문제이다.

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

AA와 BB를 표현할 때 각 자리의 수는 ASCII 순서대로 배치하는데, 00은 3333번에 해당하는 문자인 !로, 11은 3434번에 해당하는 문자인 "로, ..., 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진법으로 표현된 A,BA, B가 각각 주어진다. A,BA, B는 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!