문제
어떤 문자열에서 연속한 위치에 있는 1개 이상의 문자를 선택해 순서를 유지한 채로 나열해서 얻을 수 있는 문자열을 그 문자열의 부분문자열이라 한다.
예를 들어,
음이 아닌 두 정수
이진법으로 생각했을 때,
A 의2^k 의 자릿수와B 의2^k 의 자릿수가 서로 다르면A \oplus B 의2^k 의 자릿수가1 이고, 같으면A \oplus B 의2^k 의 자릿수가0 이다. (단,k \ge 0 )예를 들어
12 \oplus 10 은12 = 1100_{(2)}, 10 = 1010_{(2)} 이므로1100_{(2)} \oplus 1010_{(2)} = 0110_{(2)} = 6 이다.
당신은
S 의 부분문자열s 에 대해,f(s) 의 값은s 를 이진법으로 해석했을 때의 값이다. 예를 들어, 만약s = 11010 이면f(s) = 26 이다.g(s_1, s_2) 는f(s_1) 과f(s_2) 의 배타적 논리합이다.
이때
입력
첫 번째 줄에 테스트 케이스의 개수
각 테스트 케이스마다, 첫 번째 줄에 문자열의 길이
[제한]
주어지는 모든 수는 정수이다.
1 \le T \le 100 2 \le N \le 10^7 모든 테스트 케이스에서
N 의 합\le 10^7 S 는0 과1 로만 이루어진 길이가N 인 문자열이다.
출력
각 테스트 케이스마다 가능한
부분문제
번호 | 점수 | 조건 |
---|---|---|
#1 | 17점 | |
#2 | 20점 | |
#3 | 13점 | |
#4 | 12점 | |
#5 | 38점 | 추가 제약 조건 없음. |
예제1
4
3
010
5
10101
5
00100
5
11111
11
11111
110
11110
예제2
4
2
00
2
01
2
10
2
11
0
1
11
10