https://www.acmicpc.net/problem/1322
[난이도] Gold4
[유형] 비트마스크
[풀이]
X + Y = X | Y 를 만족하기 위해서는
Y를 2진수로 표현했을 때의 1은 X의 2진수가 0인 비트에만 넣을 수 있다. (반올림이 발생하기 때문에)
그러므로 K를 2진수로 표현했을 때의 비트를 하나씩 Y에서 비트가 0인 부분에 채워넣고, Y에서 비트가 1인 부분에는
0을 채워넣은 값이 정답이다.
#include <cstdio>
using ll = long long;
ll X,K,ret;
int main(){
scanf("%lld%lld",&X,&K);
int j=0;
for(int i=0;;i++){
if(!((X>>i)&1)){
ret |= ((K>>j)&1) << i;
j++;
if(!(K>>j)) break;
}
}
printf("%lld",ret);
}
https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/1322.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 20040 : 사이클게임 (C++) (0) | 2021.02.06 |
---|---|
[BOJ/백준][Gold4] 16172 : 나는 친구가 적다(large) (C++) (0) | 2021.02.06 |
[BOJ/백준][Gold4] 9007 : 카누 선수 (C++) (0) | 2021.02.06 |
[BOJ/백준][Gold4] 3671 : 산업 스파이의 편지 (C++) (0) | 2021.01.31 |
[BOJ/백준][Gold4] 18119 : 단어 암기 (C++) (0) | 2021.01.31 |