쿼터너리 컴퓨터 Batch
Time limit | Memory limit | # of submissions | # of submitted users | Solved # | Accepted user ratio |
---|---|---|---|---|---|
4000 ms | 512 MiB | 35 | 10 | 3 | 30.00% |
경근이는 새로운 컴퓨터를 발명했다. 이 컴퓨터는 다른 컴퓨터들과는 달리 이진법이 아닌 사진법으로 자료를 저장한다.
이 컴퓨터에서 의 연산 결과와 의 연산 결과를 표로 나타내면 아래와 같다.
경근이는 자신이 발명한 컴퓨터가 너무나 혁신적이라고 생각하여, 이를 한시라도 빨리 사용해 보고 싶은 마음에 컴퓨터를 직접 만들었다!
이 컴퓨터는 아주 적은 예산을 들여 임시로 만든 것이기 때문에, 개의 변수만 저장할 수 있으며, 각 변수는 0 이상 3 이하의 정수 하나만 저장할 수 있다. 경근이는 편의상 각 변수에 0 이상 이하의 번호를 붙였고, 번 변수를 로 부르기로 했다.
경근이는 시간과 정성을 들여 꼭 필요하다고 판단한 4가지 기본 명령을 만들었다.
addv
(, 의 값은 모두 정수): 에 의 값을 대입한다.xorv
(, 의 값은 모두 정수): 에의 값을 대입한다.
addc
(, , 의 값은 모두 정수): 에 의 값을 대입한다.xorc
(, , 의 값은 모두 정수): 에의 값을 대입한다.
경근이는 개의 기본 명령을 나열한 코드를 작성했다. 코드를 컴파일하면 프로그램이 생성되는데, 이 프로그램은 명령을 실행하기 전 각 변수 에 저장할 값을 입력받아, 코드에 있는 개의 명령을 하나씩 하나씩 순서대로 실행하고, 모든 명령을 실행한 이후 각 변수 에 저장되어 있는 값을 출력한다. 편의상 입력을 로, 출력을 로 나타내자.
아쉽게도, 경근이의 구현 실수로 인해, 모든 변수 에는 초기에 저장될 수 없는 값인 ()이 존재한다. 따라서 여야 하므로, 로 가능한 값은 0, 1, 2, 3 중 가 아닌 수들이다. 그러므로 가능한 모든 입력의 수는 가지임을 알 수 있다.
경근이는 완벽한 프로그램을 작성했는지 알고자 모든 가능한 입력들을 고려해 보기로 한다. 경근이는 결과를 기록하기 위해 페이지로 구성된 노트를 구매했으며, 각 페이지에 0 이상 이하의 정수 번호를 붙였다. 경근이는 가능한 모든 입력을 만들어 이를 모두 한번씩 프로그램에 넣어 보면서, 각 입력에 대한 프로그램의 출력 을 얻은 후, 의 값을 번 페이지에 적는 일을 할 것이다.
모든 입력을 고려한 이후, 번 페이지에 적혀 있는 수들의 합을 라고 하자. 경근이는 작업을 시작하기 전, 최소한의 안전 장치를 마련하고자 모든 에 대해 를 4로 나눈 나머지를 알고자 한다.
입력
첫 번째 줄에 변수의 수 ()과 명령의 수 ()이 주어진다.
두 번째 줄에는 ()이 공백을 사이로 두고 주어진다. 여기서 는 명령을 실행하기 전 변수 에 저장될 수 없는 값이며, 정수이다.
이후 개의 줄에 명령들이 실행되는 순서대로 한 줄에 하나씩 주어진다. 이 중 ()번째 줄의 입력 형식은 다음과 같으며, 주어지는 모든 수는 정수이며, 공백 하나로 구분된다.
- " " (): 번째로 실행되는 명령이
addv
임을 나타낸다. - " " (): 번째로 실행되는 명령이
xorv
임을 나타낸다. - " " (, ): 번째로 실행되는 명령이
addc
임을 나타낸다. - " " (, ): 번째로 실행되는 명령이
xorc
임을 나타낸다.
출력
를 4로 나눈 나머지를 라고 할 때, 첫 번째 줄에 , , , 을 공백을 사이로 두고 출력한다.
부분문제
부분문제 | 점수 | N |
---|---|---|
1 | 31 | ≤ 12 |
2 | 95 | ≤ 18 |
입출력 예제
입력
2 2
2 3
0 0 1 0
1 1 1 0
출력
1 0