더하기와 곱하기

NYPC 2023 · Round 1

KK 자리의 이진수로 표현된 음이 아닌 정수 XX가 주어진다. XX는 정확히 KK 자리로 표현되므로, 제일 앞자리가 00일 수도 있다.

예를 들어, XX의 값이 십진수로 55이고 K=5K=5인 경우, XX55 자리 이진수로 표현하면 0010100101이 된다.

이 수에 아래 두 가지 연산 중 하나를 골라서 수행하는 것을 00 번 이상 할 수 있다.

여기서, 2K2^K22KK 번 곱한 것을 의미한다. 예를 들어, 23=2×2×2=82^3 = 2 \times 2 \times 2 = 8이고, 24=162^4 = 16이다.

두 연산을 원하는 순서로 진행하여 XX00으로 만드는 것이 목표이다. 이때, 필요한 최소 연산의 횟수를 구하는 프로그램을 작성하시오.

입력 형식

첫 줄에 XX의 이진수 표현의 자릿수 KK가 주어진다. (1K10000001 \leq K \leq 1\,000\,000)

두 번째 줄에 KK 자리의 이진수로 표현된 수 XX가 주어진다.

출력 형식

첫 줄에 두 연산을 원하는 순서로 00 번 이상 수행하여 XX00으로 만들 때 필요한 최소 연산의 수를 출력한다.

예제 1

입력

8 01011101

출력

6

예제 2

입력

8 01001100

출력

6

예제 3

입력

10 0011111101

출력

5

예제 설명

예제 1에서, 첫 번째 연산을 33 번 수행하면 XXKK 자리 이진수로 0110000001100000이 된다. 이후 두 번째 연산을 33 번 수행하면 XX00이 된다. 이 경우가 최소 횟수의 연산을 수행하는 방법이다.

예제 2에서, 두 번째 연산을 66 번 수행하는 것이 최소 횟수의 연산을 수행하는 방법이다.

예제 3에서, 첫 번째 연산을 33 번 수행하고 두 번째 연산을 22 번 수행하여 XX00으로 만드는 것이 최소 횟수의 연산을 수행하는 방법이다.

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞혀야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 15

K10K \le 10

종류 2: 32

K1000K \le 1\,000

종류 3: 53

추가적인 제한 조건이 없음.

해설