#5399

연산의 합

다음과 같은 수식을 생각해 보자: 1 □ 1 □ 1 □ 1 □ 1 □ 1 □ 1

각 빈칸 □에는 덧셈 연산자(+), XOR 연산자(^), AND 연산자(&), OR 연산자(|) 중 원하는 연산자를 독립적으로 선택하여 넣을 수 있다.

연산자의 우선순위는 아래와 같다. 아래의 우선순위는 프로그래밍 언어(C, C++, Java, Python)의 동작과는 다르다는 점에 유의하라.

  • 비트 연산자인 ^, &, | 연산자의 우선순위는 서로 동일하다. 같은 우선순위를 가진 비트 연산자는 반드시 왼쪽에서 오른쪽으로 차례대로 계산한다.
  • 덧셈 연산자(+)는 비트 연산자보다 우선순위가 낮으며, 항상 가장 마지막에 계산한다.

즉, 전체 수식을 계산할 때는 먼저 덧셈 연산자(+)를 기준으로 여러 개의 부분식으로 나눠서 각각의 값을 구한 다음, 이 부분식의 결괏값들을 더해 최종적으로 전체의 결괏값을 구한다. 각 부분식 내부는 비트 연산자로만 구성되며 왼쪽에서 오른쪽으로 차례대로 계산한다.

예시로, 1 ^ 1 & 1 + 1 | 1 & 1 + 1 = ((1 ^ 1) & 1) + ((1 | 1) & 1) + 1 = 2이다.

모든 빈칸 □에 연산자 4가지(+, ^, &, |)를 독립적으로 자유롭게 넣을 수 있으므로, 빈칸을 채워 수식을 완성할 수 있는 방법의 수는 총 가지 있다.

각각의 완성된 수식에 대해 결괏값을 계산한 후 모두 더한 값은 얼마인가?

문제를 해결하려면 로그인해 주세요.

문제 형식

    주관식

출처

  • KOI 2025 1차대회 고등부 1교시 12번
연습하기도전하기함께하기보고 배우기
공지사항 · 이용안내
회원가입로그인
연습하기도전하기함께하기보고 배우기공지사항 · 이용안내