아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

월쉬 행렬

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

요약
크기가 2^60까지 커질 수 있는 월시 행렬에서 한 행의 S열부터 E열까지의 합을 구한다.
난이도

보통10점 중 7점

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

문제

월쉬 행렬(Walsh matrix)은 크기가 2의 거듭제곱인 정사각 행렬로, 모든 원소가 +1+1 또는 −1-1인 행렬이다.

이 행렬의 가장 큰 특징은 서로 다른 두 행(또는 서로 다른 두 열)의 스칼라 곱, 즉 같은 위치의 원소끼리 곱해 모두 더한 값이 항상 00이라는 점이다.

크기가 11인 월쉬 행렬은 원소가 하나뿐이며 그 값은 +1+1이다. 크기가 2N+12^{N+1}인 월쉬 행렬은 크기가 2N2^N인 월쉬 행렬 HNH_N 네 개를 이어 붙여 만든다.

HN+1=(HNHNHN−HN)H_{N+1} = \begin{pmatrix} H_N & H_N \\ H_N & -H_N \end{pmatrix}

즉 왼쪽 위, 오른쪽 위, 왼쪽 아래 세 블록에는 HNH_N을 그대로 넣고, 오른쪽 아래 블록에는 모든 원소의 부호를 뒤집은 −HN-H_N을 넣는다.

행 번호는 위에서부터 0,1,2,…0, 1, 2, \dots로, 열 번호는 왼쪽에서부터 0,1,2,…0, 1, 2, \dots로 매긴다. 정수 N,R,S,EN, R, S, E가 주어질 때, 크기가 2N2^N인 월쉬 행렬에서 RR행의 SS열부터 EE열까지의 원소를 모두 더한 값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 네 정수 N,R,S,EN, R, S, E로 이루어진 한 줄이다. (0≤N≤600 \le N \le 60, 0≤R<2N0 \le R < 2^N, 0≤S≤E<2N0 \le S \le E < 2^N, E−S≤10,000E - S \le 10{,}000)

마지막 줄에는 −1-1이 네 개 주어지며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다 구한 합을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2 1 0 1
    48 0 0 47
    -1 -1 -1 -1
    
    예상 출력
    0
    48