A = B ⊕ C

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

요약
1이 X개, 0이 Y개인 수열 중 A[3k-2] = A[3k-1] XOR A[3k]를 모든 세 칸 묶음에서 만족하는 것의 개수를 구한다.
난이도

보통10점 중 5점

유형
조합론, 수학, 동적 계획법
정답자
아직 제출이 없습니다

문제

XX개의 11과 YY개의 00을 사용해 길이가 X+YX+Y(단, X+YX+Y는 3의 배수)인 수열을 만들려고 한다. 아래 조건을 만족하도록 길이가 X+YX+Y인 수열 A=\left\\{ A\_1,A\_2,\cdots ,A\_{X+Y} \right\\}를 구성하는 경우의 수를 구해보자.

  • 1≤k≤(X+Y)/31\le k\le(X+Y) /3인 모든 정수 kk에 대해 A_3k−2=A_3k−1⊕A_3kA\_{3k-2}=A\_{3k-1}\oplus A\_{3k}
  • 즉, A_1=A_2⊕A_3A\_1=A\_2\oplus A\_3, A_4=A_5⊕A_6A\_4=A\_5\oplus A\_6, ⋯\cdots, A_X+Y−2=A_X+Y−1⊕A_X+YA\_{X+Y-2}=A\_{X+Y-1}\oplus A\_{X+Y}

⊕\oplus는 배타적 논리합(XOR) 연산자이다. 즉, 두 피연산자의 값이 다르면 연산의 결과는 11, 같으면 00이다.

입력

첫째 줄에 정수 XX, YY가 공백으로 구분되어 주어진다.

출력

수열을 구성하는 경우의 수를 출력한다. 단, 답이 매우 커질 수 있으므로 1,000,000,007(=109+7)1\\, 000\\, 000\\, 007(=10^9+7)로 나눈 나머지를 출력한다.

제한

  • 0≤X,Y≤3,0000\le X,Y\le 3\\, 000
  • X+YX+Y는 3의 배수이다.
  • X+Y≥3X+Y\ge 3
  • 입력으로 주어지는 수는 모두 정수이다.

예제3

  1. 예제 1

    입력
    4 5
    
    예상 출력
    27
    
  2. 예제 2

    입력
    1 2
    
    예상 출력
    0
    
  3. 예제 3

    입력
    3000 3000
    
    예상 출력
    292387267