문자열 디코딩
면접 대비시간 제한1초메모리 제한128 MB
문자열, 순열, 그리고 큰 반복 횟수 m이 주어질 때, 순열의 역방향으로 주어진 암호화된 문자열을 복원한다.
문제
문자열을 인코딩하는 다음과 같은 방법이 있다.
인코딩할 문자열의 각 문자를 순서대로 이라고 하자. 인코딩은 다음 절차를 따른다.
- 자연수 과, 집합 의 서로 다른 개의 수로 이루어진 순열 을 정한다.
- 아래 3번 과정을 정확히 번 반복한다.
- 모든 에 대해 로 둔 다음, 각 를 로 바꾼다. (즉 한 번의 과정에서 새 문자열의 번째 문자는 이전 문자열의 번째 문자가 된다.)
예를 들어 문자열 "hello"를 , 순열 로 인코딩하면 다음과 같이 바뀐다.
"hello" → "elhol" → "lhelo" → "helol"
인코딩된 문자열과, 인코딩에 사용한 및 순열 이 주어질 때, 인코딩하기 전의 원래 문자열을 복원(디코딩)하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫째 줄에는 두 정수 과 이 주어진다. (, )
둘째 줄에는 인코딩에 사용한 서로 다른 개의 정수 이 주어진다. ()
셋째 줄에는 인코딩된 문자열이 주어진다. 이 문자열의 길이는 이며, 공백이 포함될 수 있다.
입력의 마지막 줄에는 이 두 개 주어지며, 이 줄은 처리하지 않는다.
출력
각 테스트 케이스마다 디코딩한 원래 문자열을 한 줄에 출력한다.