QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 512 MB مجموع النقاط: 100

#10958. Podobieństwo wszystkich par

الإحصائيات

Każdej z $N$ ($1\le N\le 5\cdot 10^5$) krów Farmer John przypisano ciąg bitów długości $K$, który nie składa się wyłącznie z zer ($1\le K\le 20$). Różnym krowom można przypisać ten sam ciąg bitów.

Podobieństwo Jaccarda dwóch ciągów bitów definiuje się jako liczbę ustawionych bitów w ich bitowym przecięciu podzieloną przez liczbę ustawionych bitów w ich bitowej sumie. Na przykład podobieństwo Jaccarda ciągów $\texttt{11001}$ i $\texttt{11010}$ wynosi $2/4$.

Dla każdej krowy wypisz sumę podobieństw Jaccarda jej ciągu bitów do ciągów bitów wszystkich $N$ krów, łącznie z nią samą, modulo $10^9+7$. Dokładniej, jeśli suma jest równa liczbie wymiernej $a/b$, gdzie $a$ i $b$ są liczbami całkowitymi niemającymi wspólnych czynników, wypisz jedyną liczbę całkowitą $x$ z przedziału $[0,10^9+7)$, dla której $bx-a$ jest podzielne przez $10^9+7$.

Wejście

Pierwszy wiersz zawiera $N$ i $K$. Każdy z kolejnych $N$ wierszy zawiera liczbę całkowitą $i\in (0,2^K)$, reprezentującą krowę powiązaną z binarnym zapisem $i$ o długości $K$.

Wyjście

Dla każdej krowy wypisz sumę modulo $10^9+7$ w osobnym wierszu.

Przykład

Wejście 1

4 2
1
1
2
3

Wyjście 1

500000006
500000006
500000005
500000006

Uwagi

Krowom przypisano następujące ciągi bitów: $[\texttt{01}, \texttt{01}, \texttt{10}, \texttt{11}]$. Dla pierwszej krowy suma wynosi $\text{sim}(1,1)+\text{sim}(1,1)+\text{sim}(1,2)+\text{sim}(1,3)=1+1+0+1/2\equiv 500000006\pmod{10^9+7}$. Ciąg bitów drugiej krowy jest taki sam jak ciąg pierwszej krowy, więc jej suma jest taka sama jak powyżej. Dla trzeciej krowy suma wynosi $\text{sim}(2,1)+\text{sim}(2,1)+\text{sim}(2,2)+\text{sim}(2,3)=0+0+1+1/2\equiv 500000005\pmod{10^9+7}$.

Dla pierwszej krowy suma wynosi $\text{sim}(1,1)+\text{sim}(1,1)+\text{sim}(1,2)+\text{sim}(1,3)=1+1+0+1/2\equiv 500000006\pmod{10^9+7}$. Dla trzeciej krowy suma wynosi $\text{sim}(2,1)+\text{sim}(2,1)+\text{sim}(2,2)+\text{sim}(2,3)=0+0+1+1/2\equiv 500000005\pmod{10^9+7}$.

Ciąg bitów drugiej krowy jest taki sam jak ciąg pierwszej krowy, więc jej suma jest taka sama jak powyżej. Dla trzeciej krowy suma wynosi $\text{sim}(2,1)+\text{sim}(2,1)+\text{sim}(2,2)+\text{sim}(2,3)=0+0+1+1/2\equiv 500000005\pmod{10^9+7}$.

Dla trzeciej krowy suma wynosi $\text{sim}(2,1)+\text{sim}(2,1)+\text{sim}(2,2)+\text{sim}(2,3)=0+0+1+1/2\equiv 500000005\pmod{10^9+7}$.

Ograniczenia

Pliki wejściowe 2–15: Dla każdego $K\in \{10,15,16,17,18,19,20\}$ będą dwa przypadki testowe.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.