시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 256 MB 160 62 57 42.857%

문제

승주는 과제로 계산기를 만들고 있습니다.

계산기는 아직 미완성이므로 기능이 많지 않습니다.

계산기는 하나의 정수 X를 가지며, 총 4개의 버튼이 있습니다. 버튼의 기능은 아래와 같습니다.

  • [+] : X에 2를 더합니다.
  • [-] : X에서 2를 뺍니다.
  • [*] : X에 2를 곱합니다.
  • [/] : X를 2로 나눕니다. (나머지는 버립니다.)

버튼을 눌렀을 때 X가 음수가 되거나 263-1 을 초과하는 경우 계산기가 폭발합니다.

승주는 계산기가 잘 작동하는지 테스트하고 싶습니다.

초기에 X가 0일 때, 정수 N이 주어지면 버튼을 잘 눌러 계산기를 폭발시키지 않고 XN이 되도록 해주세요.

입력

첫 번째 줄에 정수 N (1 ≤ N ≤ 1013) 이 주어집니다.

출력

첫 번째 줄에 버튼을 누른 횟수 K (0 ≤ K ≤ 99) 를 출력합니다. 누른 횟수를 최소화 하지 않아도 됩니다. 단, 누른 횟수가 99번을 넘으면 안됩니다.

만약 99번 안에 N을 만드는 방법이 존재하지 않는다면 첫 번째 줄에 "-1" 하나만 출력하고 더 이상 아무것도 출력하지 않아야 합니다.

두 번째 줄에는 버튼들을 누른 순서대로 공백을 사이에 두고 출력합니다. 버튼은 "[+]", "[-]", "[*]", "[/]" 중 하나이어야 합니다. 각 버튼의 기능은 지문에 서술되어 있습니다.

방법이 여러 가지인 경우 그 중 하나만 출력합니다.

예제 입력 1

14

예제 출력 1

5
[+] [*] [*] [*] [-]

버튼을 예제와 같이 누르면 X는 0 -> 2 -> 4 -> 8 -> 16 -> 14 순으로 변합니다.

예제 입력 2

1

예제 출력 2

4
[+] [*] [-] [/]

힌트

X가 계산 과정에서 32bit 정수형의 범위를 초과할 수 있음에 주의하세요.

C/C++의 경우 long long 타입, Java의 경우 long 타입을 사용하는 것을 권장합니다.

출처

University > 경북대학교 > 2019 Goricon B번

  • 문제를 만든 사람: exqt