¿La página no carga? Prueba haciendo clic aquí.
Placeholder

#10431
Interactivo
Calificación en espera

ASeDatAb 10s 1024MB

Problemas

한 연구 컨소시엄이 3년 동안 최고의 데이터베이스를 찾아왔지만, 여전히 문제가 해결되지 않고 있다. 이 데이터베이스는 값들을 8비트 이진 문자열로 이루어진 레코드(record)로 저장한다. 불행히도 레코드의 값을 설정(set)하는 함수 구현에 결함이 있다.

데이터베이스의 각 레코드는 8비트 이진 문자열이다. 비트들은 왼쪽에서 오른쪽으로 0부터 7까지 번호가 매겨져 있다. 어떤 레코드의 값을 새로운 값 V로 설정하라는 명령을 받으면, 데이터베이스는 실제로는 V로 설정하지 않고 다음을 수행한다:

  1. 0 이상 7 이하의 정수 r을 하나 선택하고, V를 오른쪽으로 r만큼 회전시킨 값 W를 만든다. 즉, W((i + r) \bmod 8)번째 비트는 V의 i번째 비트이다.
  2. 레코드의 현재 값 XX XOR W로 바꾼다. 즉, 새 값의 i번째 비트가 1이 되는 것은 XW의 i번째 비트가 서로 다를 때 그리고 그때뿐이다.
  3. 마지막으로, 새 값에서 1인 비트의 개수를 사용자에게 반환한다.

다행히도, 초기 값이 무엇이든 데이터베이스가 어떤 회전 값을 선택하든, 이 연산을 최대 300번 사용하면 항상 레코드의 모든 비트를 0으로 초기화할 수 있음이 밝혀졌다. 데이터베이스와 상호작용하여 이를 수행하는 프로그램을 작성하라.


Fuente

GCJ 2022r1b C

Debes iniciar sesión para escribir código.