모든 쌍의 유사도
시간 제한2초메모리 제한2048 MB
길이 K인 비트열 N개가 주어질 때, 각 소가 자기 자신을 포함한 모든 비트열과의 자카드 유사도 합을 10^9+7로 나눈 나머지로 구합니다.
문제
농부 존의 소 마리()에게는 각각 길이 인 비트열이 하나씩 할당되어 있다(). 비트열은 모두 0이 아닌 값이다. 서로 다른 소에게 같은 비트열이 할당될 수도 있다. 두 비트열의 자카드 유사도는 비트 AND 결과의 1의 개수를 비트 OR 결과의 1의 개수로 나눈 값이다. 예를 들어 11001과 11010의 자카드 유사도는 이다. 각 소에 대해, 자신의 비트열과 자기 자신을 포함한 마리 소의 비트열 각각이 이루는 자카드 유사도를 모두 더한 값을 로 나눈 나머지로 출력한다. 합이 서로소인 정수 , 에 대해 이면, 가 로 나누어떨어지는 범위의 정수 를 출력한다.
입력
첫 줄에 과 가 주어진다. 다음 개의 줄에는 각각 길이 의 이진 표현이 나타내는 정수 가 주어진다.
출력
각 소에 대해 합을 로 나눈 나머지를 한 줄에 하나씩 출력한다.
힌트
소에 할당된 비트열은 01, 01, 10, 11이다. 첫 번째 소의 합은 이다. 두 번째 소의 비트열은 첫 번째 소와 같으므로 합도 같다. 세 번째 소의 합은 이다.