조커 찾기
시간 제한2초메모리 제한512 MB
27장의 카드를 N번 섞는 규칙이 주어질 때, 처음 맨 위에 있던 조커가 모든 섞기가 끝난 뒤 몇 번째 위치에 있는지 구합니다.
문제
중앙대학교에 다니는 수현이는 머신러닝을 공부하다가 심심해져서 트럼프 카드를 가지고 놀고 있다. 유튜브에서 타짜 기술을 쓰는 영상을 보고 따라 해 보고 싶어진 수현이는 카드 덱의 맨 위에 조커를 올려두고 카드를 섞어서 조커를 원하는 위치로 보내려고 한다.
카드는 일반 카드 26장과 조커 1장, 총 27장을 사용한다. 맨 위쪽 카드를 1번, 맨 아래쪽 카드를 27번이라고 하자.
처음 상태에서 조커는 1번 위치에 있다.
카드 섞기를 번 진행한다. 번째로 카드를 섞는 방법을 라고 하면, 번째 새로운 덱은 다음 순서로 만들어진다.
- 번째 덱의 위에서부터 순서를 유지한 채로 13장을 왼쪽 덱으로, 나머지 14장을 오른쪽 덱으로 가져간다.
- 오른쪽 덱의 맨 위에서 장을 가져와 새로운 덱의 맨 위에 놓는다.
- 왼쪽 덱의 맨 위에서 장을 가져와 그 아래에 놓는다.
- 남은 오른쪽 덱의 맨 위에서 장을 가져와 3번에서 만든 덱 아래에 놓는다.
- 3번과 4번처럼 장씩 번갈아 가져와 새로운 덱 아래에 놓는다. 단, j가 홀수인 의 합은 14이고, j가 짝수인 의 합은 13이다. 즉, 의 합은 27이다.
카드 섞기 횟수와 섞을 때마다 카드를 어떻게 섞는지 주어질 때, 카드 섞기를 마친 뒤 조커가 위에서 몇 번째 카드인지 알려주자.
입력
첫 번째 줄에 카드를 섞는 횟수 이 주어진다. () 두 번째 줄부터 번째 줄까지 각 줄에 번째 섞기에 쓰는 수열 가 주어진다. (, ) 입력되는 모든 정수의 개수는 개 이하이다.
출력
카드 섞기를 마쳤을 때 조커가 덱의 맨 위에서 몇 번째에 있는지 출력한다.
힌트
이 문제는 입력이 매우 많아서 입력 단계에서 시간 초과가 날 수 있다. 주요 언어별 빠른 입력 방법은 다음과 같다.
- C++:
cin.tie(NULL);,cin.sync_with_stdio(false); - Java:
BufferedReader,Integer.parseInt - Python:
sys.stdin.readline()