Anti-hash 테스트
시간 제한1초메모리 제한256 MB
주어진 n과 문자열 u로 s(n)에서 u가 나타나는 횟수를 구하고, 같은 횟수를 갖는 문자열 v의 개수를 구합니다.
문제
다음 문자열 은 를 법으로 하는 다항식 해시를 사용하는 거의 모든 풀이를 공격할 수 있다.
여기서 는 의 이진 표현에서 1의 개수이다.
문자열 와 정수 이 주어진다. 에서 가 나타나는 횟수와, 에서 같은 횟수로 나타나는 서로 다른 문자열 의 개수를 구하라. 두 값은 매우 클 수 있으므로 로 나눈 나머지를 구한다.
입력
여러 개의 테스트 케이스가 주어진다. 첫 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다.
첫 줄에 정수 ()이 주어진다.
둘째 줄에는 a와 b로만 이루어진 문자열 ()가 주어진다.
모든 테스트 케이스의 합은 을 넘지 않는다.
출력
각 테스트 케이스마다 가 에 나타나지 않으면 을 출력한다. 그렇지 않으면 에서 의 출현 횟수를 로 나눈 나머지와, 에서 같은 출현 횟수를 갖는 서로 다른 문자열 의 개수를 로 나눈 나머지를 차례로 두 정수로 출력한다.