아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

모턴 수

면접 대비

시간 제한2초메모리 제한512 MB

요약
두 정수 x와 y를 입력받아 비트를 하나씩 엇갈리게 배치한 Morton 수를 십진수로 출력합니다.
난이도

쉬움10점 중 1점

유형
비트 연산
정답자
아직 제출이 없습니다

문제

두 정수 xx와 yy의 모턴 수는 xx의 비트와 yy의 비트를 한 자리씩 번갈아 끼워 넣어 만든 정수다. xx의 비트는 짝수 번째 자리에 놓고, yy의 비트는 홀수 번째 자리에 놓는다. 자리는 최하위 비트를 첫 번째로 두고 위로 센다.

xx의 ii번째 비트를 xix_i, yy의 ii번째 비트를 yiy_i라고 하자. 즉 x=∑i=116xi2i−1x = \sum_{i=1}^{16} x_i 2^{i-1}이고, yy도 마찬가지다. 이때 모턴 수 MM은 다음과 같다.

M=∑i=116(xi 22i−1+yi 22i−2)M = \sum_{i=1}^{16} \left( x_i \, 2^{2i-1} + y_i \, 2^{2i-2} \right)

xx와 yy를 평면 위 한 점의 좌표로 보면, 가까이 있는 두 점은 모턴 수도 서로 가깝다. 또 xx나 yy가 커지면 모턴 수도 커진다.

10진수로 주어진 xx와 yy의 모턴 수를 10진수로 구하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 xx와 yy가 공백을 사이에 두고 주어진다. (0≤x,y≤216−10 \le x, y \le 2^{16} - 1)

출력

첫째 줄에 xx와 yy의 모턴 수를 출력한다.

예제2

  1. 예제 1

    입력
    4 5
    
    예상 출력
    49
    
  2. 예제 2

    입력
    5 4
    
    예상 출력
    50