만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

신기한 수열

시간 제한1초메모리 제한1024 MB

요약
길이 N이고 원소가 M비트인 수열 중 XOR 값이 X인 것을 균일하게 고를 때, 원소 합의 기댓값을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 5점

유형
수학, 비트 연산
정답자
아직 제출이 없습니다

문제

길이 NN인 정수열 AA의 모든 원소를 비트 XOR한 값이 XX일 때, AA를 신기한 수열이라고 한다. 각 원소는 0≤Ai<2M0 \leq A_i < 2^M을 만족한다.

길이 NN인 신기한 수열 전부 중에서 하나를 균등한 확률로 고른다. 이때 ∑i=1NAi\sum_{i=1}^{N} A_i의 기댓값을 구하라.

입력

첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤10181 \leq N \leq 10^{18}, 1≤M≤2000001 \leq M \leq 200000)

둘째 줄에 XX가 부호 없는 MM자리 이진수 형태로 주어진다.

출력

∑i=1NAi\sum_{i=1}^{N} A_i의 기댓값을 소수 109+710^9+7로 나눈 나머지를 출력한다.

서로소인 두 양의 정수 aa, bb에 대해 유리수 ba\frac{b}{a}를 109+710^9+7로 나눈 나머지는, a×x≡b(mod109+7)a \times x \equiv b \pmod{10^9+7}를 만족하고 109+710^9+7보다 작은 음이 아닌 정수 xx이다. 가능한 모든 입력에 대해 그러한 xx가 존재하며 유일하다.

예제3

  1. 예제 1

    입력
    2 2
    01
    
    예상 출력
    3
    
  2. 예제 2

    입력
    4 3
    010
    
    예상 출력
    14
    
  3. 예제 3

    입력
    1 30
    111011100110101100101000000111
    
    예상 출력
    0