XOR 최대
시간 제한2초메모리 제한1024 MB
이진 문자열에서 부분 문자열 두 개를 골라 각각을 이진수로 읽은 값의 XOR이 가장 커지는 값을 구합니다.
문제
어떤 문자열에서 연속한 위치에 있는 1개 이상의 문자를 골라 순서를 유지한 채 나열해서 얻은 문자열을 그 문자열의 부분문자열이라고 한다. 예를 들어 은 의 부분문자열이지만, 의 부분문자열은 아니다.
음이 아닌 두 정수 , 의 배타적 논리합 는 다음과 같이 정의한다.
- 이진법으로 나타냈을 때, 의 자리와 의 자리가 다르면 의 자리는 1이다. 같으면 0이다. (단, )
예를 들어 에서 , 이므로, 이다.
과 로만 이루어진 길이 의 문자열 가 주어진다.
의 부분문자열 에 대해 는 를 이진수로 해석한 값이다. 예를 들어 이면 이다.
는 과 의 배타적 논리합이다. 의 부분문자열 , 를 골라 만들 수 있는 의 최댓값을 구하라.
과 가 서로 달라야 하는 것은 아니다. 에서 일부가 겹쳐도 되고, 완전히 같은 부분문자열이어도 된다.
입력
첫 번째 줄에 테스트 케이스의 개수 가 주어진다.
각 테스트 케이스는 두 줄로 이루어진다. 첫 번째 줄에 문자열의 길이 이, 두 번째 줄에 과 로만 이루어진 길이 의 문자열 가 주어진다.
출력
각 테스트 케이스마다 의 최댓값을 이진법으로 한 줄에 출력한다. 불필요한 앞자리 0은 출력하지 않는다.
제한
- 입력으로 주어지는 모든 수는 정수이다.
- 모든 테스트 케이스에서 의 합은 이하이다.
- 는 과 로만 이루어진 길이 의 문자열이다.