비밀 코드

시간 제한1초메모리 제한128 MB

요약
복소수 밑 B를 사용하는 진법으로 복소수 X를 자릿수 표현으로 변환하거나 불가능하면 실패를 출력합니다.
난이도

보통10점 중 6점

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

문제

석관은 비밀 숫자 코드로 잠겨 있다. 석관을 열려면 코드를 알고 그 값을 석관 위에 정확히 맞춰야 한다. 잘못된 코드를 입력하면 안에 든 표들이 즉시 불타 영원히 사라진다. 이 코드는 최대 100개의 정수로 이루어져 있다.

한 고고학자가 이 코드의 사본을 손에 넣었다. 그는 코드가 엉뚱한 사람의 손에 들어갈까 두려워 특별한 방법으로 숫자들을 암호화했다. 그는 암호화할 어떤 수보다도 절댓값이 큰 복소수 BB를 하나 골랐다. 그런 다음 수열 an,an−1,…,a1,a0a_n, a_{n-1}, \dots, a_1, a_0을 밑이 BB인 위치 기수법의 자리 숫자로 보고 다음과 같이 하나의 수로 인코딩했다.

X=a0+a1B+a2B2+⋯+anBnX = a_0 + a_1 B + a_2 B^2 + \cdots + a_n B^n

주어진 수 XX와 밑 BB에 대해, XX를 밑 BB의 기수법으로 나타내는 자리 숫자 a0,a1,…,ana_0, a_1, \dots, a_n을 복원하라.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어지는 TT개의 줄에는 각각 네 정수 Xr,Xi,Br,BiX_r, X_i, B_r, B_i가 주어진다 (∣Xr∣,∣Xi∣≤1000000|X_r|, |X_i| \le 1000000, ∣Br∣,∣Bi∣≤16|B_r|, |B_i| \le 16). 여기서 X=Xr+XiiX = X_r + X_i i, B=Br+BiiB = B_r + B_i i이며, BB는 기수법의 밑(∣B∣>1|B| > 1), XX는 나타내야 할 수이다.

출력

각 테스트 케이스마다 한 줄에 자리 숫자 an,an−1,…,a1,a0a_n, a_{n-1}, \dots, a_1, a_0을 쉼표로 구분하여 출력한다. 이 숫자들은 다음 조건을 모두 만족해야 한다.

  • 모든 ii에 대해 0≤ai<∣B∣0 \le a_i < |B|
  • X=a0+a1B+a2B2+⋯+anBnX = a_0 + a_1 B + a_2 B^2 + \cdots + a_n B^n
  • n>0n > 0이면 an≠0a_n \ne 0
  • n≤100n \le 100

이 조건을 만족하는 표현은 유일하다. 조건을 만족하는 표현이 존재하지 않으면 The code cannot be decrypted. 를 정확히 출력한다.

예제3

  1. 예제 1

    입력
    4
    -935 2475 -11 -15
    1 0 -3 -2
    93 16 3 2
    191 -192 11 -12
    
    예상 출력
    8,11,18
    1
    The code cannot be decrypted.
    16,15
    
  2. 예제 2

    입력
    1
    2 0 3 2
    
    예상 출력
    2
    
  3. 예제 3

    입력
    1
    5 0 2 0
    
    예상 출력
    1,0,1