-
https://www.acmicpc.net/problem/1322
아이디어
문제에서 제시한 X + Y = X | Y를 만족하는 Y의 값은 X를 이진으로 표현했을때 1에 해당하는 비트가 곂치지 않고 0에 해당하는 비트만 1인 숫자를 찾아야 합니다.
예를 들어 5는 101 이다. 조건을 만족하는 숫자는 10 또는 1000, 1010 이 된다. 이를 바탕으로 풀이했습니다.
#include <iostream> using namespace std; long long X, Y, K; void input() { cin >> X >> K; } void solution() { int pushCnt = 0; //long long -> bit : 8byte * 8 = 64 for (int i = 0; i < 65; i++) { //1bit가 아닌 자리의 bit를 더해야 함 if ((X >> i) & 1) continue; if ((K >> pushCnt) & 1) { Y |= (1LL << i); } pushCnt++; } cout << Y; } int main(void) { input(); solution(); }
'알고리즘 > 백준' 카테고리의 다른 글
BOJ 2632 피자판매 / C++ (1) 2022.12.03 BOJ 3109 빵집 / C++ (2) 2022.09.15 BOJ 2096 내려가기 / C++ (0) 2022.09.11 BOJ 10942 팰린드롬? / C++ (0) 2022.09.11 BOJ 1800 인터넷 설치 / C++ (0) 2022.09.11 댓글