만드는 중입니다

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

초콜릿의 맛은 몇 점?

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

요약
양의 정수가 적힌 R×C 격자에서 연결된 모든 부분 폴리오미노의 셀 값을 XOR한 결과를 구해 모두 더합니다.
난이도

보통10점 중 7점

유형
비트 연산, 동적 계획법, 그래프
정답자
아직 제출이 없습니다

문제

코코는 R×CR\times C 크기의 직사각형 모양 초콜릿을 생산하는 공장을 운영하고 있다. 초콜릿은 1×11\times 1 크기의 단위 초콜릿으로 나뉘어 있으며, 각 단위 초콜릿의 맛은 양의 정수 하나로 나타낼 수 있다.

최근 연구에 따르면 초콜릿의 맛은 초콜릿의 모든 부분 폴리오미노 맛의 합이다. 폴리오미노는 하나 이상의 단위 초콜릿을 변끼리 이어 붙인 모양이고, 폴리오미노의 맛은 그 폴리오미노에 속한 단위 초콜릿 맛을 모두 XOR한 값이다.

코코는 공장에서 생산되는 초콜릿들의 맛이 몇 점인지 궁금해졌다. 코코의 궁금증을 해결해주자.

입력

첫 줄에 RR, CC의 값이 주어진다. (1≤R×C≤291\le R\times C\le 29)

다음 RR개 줄에는 각 단위 초콜릿의 맛이 주어진다. ii번째 줄의 jj번째 수는 위에서 ii번째 줄, 왼쪽에서 jj번째 칸에 있는 단위 초콜릿의 맛이다. 단위 초콜릿의 맛은 11 이상 10610^6 이하이다.

출력

주어진 초콜릿의 맛의 값을 한 줄에 출력한다.

힌트

음이 아닌 두 정수 aa와 bb의 XOR을 a⊕ba\oplus b로 쓰며, 정의는 다음과 같다.

  • aa와 bb를 같은 길이의 2진법으로 표현했을 때 같은 자리의 숫자가 같으면 a⊕ba\oplus b의 그 자리는 00이고, 다르면 11이다. 길이가 다르면 짧은 쪽 앞에 0을 필요한 만큼 붙인 뒤 계산한다.

C, C++, Python 등의 프로그래밍 언어에서 aa와 bb의 XOR은 a^b로 표현한다.

여러 개의 음이 아닌 정수 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n의 XOR은 앞에서부터 차례로 XOR을 계산한 결과, 즉 ((a1⊕a2)⊕⋯ )⊕an((a_1\oplus a_2)\oplus\cdots)\oplus a_n과 같다.

예제2

  1. 예제 1

    입력
    1 4
    1 2 4 8
    
    예상 출력
    72
    
  2. 예제 2

    입력
    2 3
    1 1 1
    1 1 1
    
    예상 출력
    22