페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
30000
ms
메모리 제한
512
MB
Amiria는 신중한 인터넷 사용자이므로 자신의 계정에 이중 인증을 설정하고 있다. 그녀는 보안 키를 노릴 수 있는 침입자를 따돌리기 위한 추가 예방책으로 특별한 종류의 보안 키를 사용하고 있다. Amiria의 보안 키를 활성화하려면 코드가 필요하다. 코드를 입력하려면 번호가 적힌 회전판을 맞춰야 하며, 이는 번호식 자물쇠와 비슷하다.
Amiria의 보안 키에는 개의 회전판이 일렬로 배치되어 있다. 각 회전판에는 부터 까지의 수가 순서대로 적혀 있다. 회전판을 한 번 돌리면 사용자는 현재 표시된 정수를 다음 정수나 이전 정수로 바꿀 수 있다. 회전판의 수는 끝에서 처음으로 순환한다. 즉, 다음의 수는 이고, 이전의 수는 이다.
숨겨진 비밀번호는 없다. Amiria의 보안 키를 활성화하려면 회전판을 움직여 표시된 수의 수열이 팰린드롬이 되게 해야 한다. 즉, 수열을 왼쪽에서 오른쪽으로 읽은 결과와 오른쪽에서 왼쪽으로 읽은 결과가 같다. 침입자의 진행을 늦추기 위해 Amiria는 회전판이 씩만 회전하도록 보안 키를 조작했다. 즉, 한 번의 연산으로 현재 을 표시하는 회전판이 적절한 순환 처리를 적용하여 또는 을 표시하게 할 수 있다. 즉, 이면 연산 후 실제로 표시되는 수는 이고, 이면 실제로 표시되는 수는 이다.
Amiria는 이 시스템이 자신의 보안 키를 사용하려는 침입자의 진행을 얼마나 늦출지 확인하고 싶어 한다. 회전판의 수와 각 회전판에 현재 표시된 수가 주어질 때, 표시된 수의 수열을 팰린드롬으로 만드는 데 필요한 최소 연산 횟수를 구하거나, 그렇게 하는 것이 불가능하다고 보고하라.
시간 제한: 5초. 메모리 제한: 2 GB. . . 모든 에 대해 .
. .
. .
입력의 첫 번째 줄에는 테스트 케이스의 수 가 주어진다. 이어서 개의 테스트 케이스가 주어진다. 각 테스트 케이스는 두 줄로 이루어진다. 각 테스트 케이스의 첫 번째 줄에는 개의 정수 , , 가 주어진다. 이들은 각각 Amiria의 보안 키에 있는 회전판의 수, 각 회전판에 표시되는 정수의 수, 그리고 Amiria가 모든 회전판에 설정한 고정 증분이다. 테스트 케이스의 두 번째 줄에는 개의 정수 가 주어지며, 여기서 는 왼쪽에서 오른쪽으로 번째 회전판에 현재 표시된 수이다.
각 테스트 케이스마다 Case #$x$: $y$를 포함하는 한 줄을 출력한다. 여기서 는 1부터 시작하는 테스트 케이스 번호이고, 는 표시된 수의 수열을 팰린드롬으로 만드는 데 필요한 최소 연산 횟수이다. 허용된 연산을 통해 표시된 수의 수열을 팰린드롬으로 만들 방법이 없다면, 대신 는 IMPOSSIBLE이어야 한다.
3
5 5 4
1 4 5 5 4
3 4 2
3 4 3
2 4 2
1 4
Case #1: 3
Case #2: 0
Case #3: IMPOSSIBLE
예제 케이스 #1에서는 첫 번째와 네 번째 회전판에 덧셈 연산을 한 번씩 적용하고, 다섯 번째 회전판에 뺄셈 연산을 한 번 적용하여 번의 연산으로 수열을 팰린드롬인 로 만들 수 있다. 이보다 적은 연산으로 수열을 팰린드롬으로 만들 방법은 없다.
예제 케이스 #2에서는 수열이 이미 팰린드롬이므로 아무 연산도 필요하지 않다.
예제 케이스 #3에서는 수열이 팰린드롬이 되려면 두 수가 같아야 한다. 회전판의 값은 씩만 움직일 수 있고 현재 두 수의 홀짝성이 서로 다르므로, 그렇게 할 수 없다.
Copyright Google LLC; sourced from the Google Coding Competitions Archive.
로그인 상태를 확인하는 중입니다.