돌 게임
시간 제한1초메모리 제한256 MB
1≤a≤n, 1≤b≤m인 두 더미 (a,b)에 대해 선공 승리, 무승부, 후공 승리 위치의 개수를 각각 10^9+7로 나눈 나머지로 구한다. n과 m은 이진 문자열로 주어진다.
문제
Chiaki는 다음과 같은 흥미로운 돌 게임을 생각해 냈다. 두 플레이어가 비어 있지 않은 두 개의 돌 더미에서 시작한다. 각 턴에서 플레이어는 돌이 짝수 개인 더미 하나를 골라 그 더미의 절반에 해당하는 돌을 다른 더미로 옮긴다. 더 이상 움직일 수 없거나 이미 나왔던 상태에 도달하면 게임이 끝난다. 전자의 경우 움직일 수 없는 플레이어가 진다. 후자의 경우 게임은 무승부로 선언된다.
두 양의 정수 과 이 주어질 때, Chiaki는 다음을 만족하는 쌍 ()의 개수를 알고 싶어 한다. 처음에 두 더미에 각각 개와 개의 돌이 있을 때 선공 플레이어가 이기는 전략을 가지거나, 게임이 무승부로 끝나거나, 후공 플레이어가 이기는 전략을 가지는 경우이다. 이 수는 매우 클 수 있으므로 로 나눈 나머지만 계산하면 된다.
입력
여러 개의 테스트 케이스가 주어진다. 입력의 첫 번째 줄에는 테스트 케이스의 수를 나타내는 정수 가 주어진다. 각 테스트 케이스에 대해:
첫 번째 줄에는 이진 문자열 ()가 주어진다. 이는 앞에 불필요한 0이 없는 의 이진 표현이다.
두 번째 줄에는 이진 문자열 ()가 주어진다. 이는 앞에 불필요한 0이 없는 의 이진 표현이다.
모든 테스트 케이스에서 이진 문자열 길이의 합은 을 넘지 않는다.
출력
각 테스트 케이스에 대해 세 개의 정수를 출력한다. 이는 각각 선공 플레이어가 이기는 쌍 의 개수, 게임이 무승부로 끝나는 쌍의 개수, 후공 플레이어가 이기는 쌍의 개수이다.
힌트
첫 번째 예제에 대해:
- 선공 플레이어가 이기는 쌍: , , , , , , , .
- 게임이 무승부로 끝나는 쌍: , , , , , , , , , , , , , , , , , , , , , , , .
- 후공 플레이어가 이기는 쌍: , , , , , , , , , , , , , , , , .