2로 몇 번 나누어질까

링크: https://www.acmicpc.net/problem/1047

 

1047번: 울타리

첫째 줄에 N이 주어진다. N은 2보다 크거나 같고, 40보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 각 나무가 심어져 있는 위치와 그 나무로 만들 수 있는 울타리의 길이가 순서대로 주어

www.acmicpc.net

 

1차 시도 실패

입력받은 사이 수를 2진법으로 변환 후 우측에서부터 체크한다.
가장 먼저 1이 나온 지점이 문제가 원하는 약수이다.
이를 더한다.

 

  • 미해결 코드
      #include<iostream>
      #include<cmath>
      using namespace std;
      #define maxNum 1000000000000000
      long long unsigned int a, b;
      long long unsigned int sum = 0;
      long long unsigned int i = 0;
    
    int main() {
        cin >> a >> b;
        for (i = a; i <= b; i++) {
            int count = 0, temp = i;
            while (!(temp % 2)) {
                count++;
                temp /= 2;
            }
            sum = (long long unsigned int)sum + pow(2, count);
        }
    
        cout << sum;
        return 0;
    }

 

'ProblemSolving' 카테고리의 다른 글

[BOJ] 1644_소수의 연속합  (0) 2021.03.08
[BOJ] 1737_Pibonacci  (0) 2021.03.06
[BOJ] 1715_카드 정렬하기  (0) 2021.03.04
[BOJ] 2697_다음수 구하기  (0) 2021.03.04
[BOJ] 1083_소트  (0) 2021.03.01
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기