www.acmicpc.net/problem/1094

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대��

www.acmicpc.net

#include <iostream>

int n, a;

int main(void)
{
  std::cin >> n;
  // 최대값 64니까 2의 6승까지만 비트마스킹
  for(int i = 0 ; i < 7 ; i++)
  {
    // 해당 자릿수에 비트가 있으면 증가
    if(n & (1 << i))  a++;
  }
  std::cout << a << '\n';
}

 

[Try]

1. 문제에서 뭘 장황하게 설명하고 있지만, 결국에는 1, 2, 4, 8, 16, 32 등 2의배수로 수를 만들라는 뜻. 비트만 세주면 된다

 

[Point]

1. builtin popcount (gcc 내장함수, 정수에서 1 비트 수를 세준다)

2. 비트연산자에 친숙해지기

+ Recent posts