초콜릿의 맛은 몇 점?
시간 제한1초메모리 제한1024 MB
양의 정수가 적힌 R×C 격자에서 연결된 모든 부분 폴리오미노의 셀 값을 XOR한 결과를 구해 모두 더합니다.
문제
코코는 크기의 직사각형 모양 초콜릿을 생산하는 공장을 운영하고 있다. 초콜릿은 크기의 단위 초콜릿으로 나뉘어 있으며, 각 단위 초콜릿의 맛은 양의 정수 하나로 나타낼 수 있다.
최근 연구에 따르면 초콜릿의 맛은 초콜릿의 모든 부분 폴리오미노 맛의 합이다. 폴리오미노는 하나 이상의 단위 초콜릿을 변끼리 이어 붙인 모양이고, 폴리오미노의 맛은 그 폴리오미노에 속한 단위 초콜릿 맛을 모두 XOR한 값이다.
코코는 공장에서 생산되는 초콜릿들의 맛이 몇 점인지 궁금해졌다. 코코의 궁금증을 해결해주자.
입력
첫 줄에 , 의 값이 주어진다. ()
다음 개 줄에는 각 단위 초콜릿의 맛이 주어진다. 번째 줄의 번째 수는 위에서 번째 줄, 왼쪽에서 번째 칸에 있는 단위 초콜릿의 맛이다. 단위 초콜릿의 맛은 이상 이하이다.
출력
주어진 초콜릿의 맛의 값을 한 줄에 출력한다.
힌트
음이 아닌 두 정수 와 의 XOR을 로 쓰며, 정의는 다음과 같다.
- 와 를 같은 길이의 2진법으로 표현했을 때 같은 자리의 숫자가 같으면 의 그 자리는 이고, 다르면 이다. 길이가 다르면 짧은 쪽 앞에 0을 필요한 만큼 붙인 뒤 계산한다.
C, C++, Python 등의 프로그래밍 언어에서 와 의 XOR은 a^b로 표현한다.
여러 개의 음이 아닌 정수 의 XOR은 앞에서부터 차례로 XOR을 계산한 결과, 즉 과 같다.