티스토리 뷰

문제

<그림1: 문제설명>

문제는 쉽다. 주어지는 숫자를 2진수로 봤을 때 아래 bit부터 1이 몇개가 나올텐데, 번갈아가면서 a와 b에 추가해가면 된다. 코드는 다음과 같다.

 

#include<iostream>
#include<bitset>
using namespace std;

int main() {
	int n,count,a,b;
	bitset<32> bits;
	while (cin >> n) {
		if (n == 0) break; //terminal condition
		count = 0;
		a = 0; b = 0;
		bits = n;

		for (int i = 0; i < 32; i++) {
			if (bits[i] == 1) {
				if (count % 2 == 0) a += (1 << i);
				else b += (1<<i);
				++count;
			}
		}
		cout << a << " " << b << endl;
	}

	return 0;
}

 

 

댓글