문제출처 : https://www.acmicpc.net/problem/24023
code
#include <iostream>
#define MAX 200000
using namespace std;
int arr[MAX];
int main()
{
int N, K, i, s = 0, e = 0, answer = 0;
cin >> N >> K;
for (i = 0; i < N; i++)
cin >> arr[i];
s = 0;
for (i = 0; i < N; i++)
{
if (s < 0)
s = i;
if ((K | arr[i]) > K)
{
answer = 0;
s = -1;
e = -1;
}
else
{
answer = arr[i] | answer;
if (answer == K)
{
e = i;
break;
}
}
}
if (answer == K)
cout << ++s << " " << ++e;
else
cout << -1;
return 0;
}
비트연산자를 사용하는 문제였다. 비트연산이라고 어려운문제가 아니라 그냥 반복문돌면서 풀어버렸다. 별로 어렵진 않은 문제다.