문제
동구와 정구는 서로 친한 친구이다. 그래서 그 둘은 그들만의 대화를 하기 위해 새로운 암호 체계를 발명하였다.
그들의 메시지는 이진수로 표현된다. 그 메시지를 b 라고 하자. 암호화시키는 과정은 다음과 같다. k줄에 걸쳐 b를 쓴다. 단 한줄 한줄 늘어날때마다 왼쪽에서부터 한 칸씩 들여쓰기(shift) 한다. 다 썼으면 그대로 XOR연산한다.
예를 들면 1001011라는 메시지를 암호화시키는 과정을 보자. 이때 k=4이다.
1001011 //들여쓰기 0칸, 즉 원래의 메시지 b
01001011 //들여쓰기 1칸(편의상 0으로 표현했다. 어차피 xor할거니깐)
001001011 //들여쓰기 2칸
0001001011 //들여쓰기 3칸
1110101001 <- XOR되서 암호화된 메시지 s
택쌤은 여기까지 읽고 “아 감사합니다. 이렇게 쉬운 문제를 내주시다니요. s를 구하면 되는거죠?” 라고 생각하는 학생들을 실망시키기로 했다. 암호는 암호화시키는 것만큼이나 해독시키는 게 중요한 것 아니겠는가. 암호화된 메시지 s와 k를 주었을 때 원래의 메시지 b를 출력하는 프로그램을 작성하라.
입력
첫째 줄에 n과 k가 주어진다. n은 원래의 메시지 b의 길이이다. k는 위에 설명되어 있는 그 k이다.
두번째 줄에 암호화된 메시지 s가 2진수로 주어진다.
암호화 과정을 걸쳐서 만들 수 없는 s가 입력으로 주어지는 경우는 없다. 1<=n<=106, 1<=k<=106, s의 길이 = n+k-1
출력
길이 n의 원래의 메시지 b를 출력하라.
예제 #1
7 4
1110100110
1001010
예제 #2
6 2
1110001
101111