728x90
반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXRSXf_a9qsDFAXS
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
#include<cstdio>
typedef long long ll;
using namespace std;
int main(void)
{
int size;
ll n,m,t,t2;
scanf("%d",&size);
for(int i = 0; i < size; i++)
{
scanf("%lld %lld",&n,&m);
t = (1<<n)-1;
if( (m&t) == t)
printf("#%d ON\n",i+1);
else
printf("#%d OFF\n",i+1);
}
return 0;
}
해결방법 :
비트마스크를 이용하여 맨 끝에 N자리만 추출해서 2^n-1과 비교한다.
틀렸던것 :
연산자 우선순위가 ==가 &보다 빠르다.
처음에 m & t == t 로 하니까
t == t 를 먼저 하고 m이랑 비교를 한다. 따라서 m&&1을 했던것이다.
저렇게 쓴다는건 첫번째 비트가 켜져있는지 안켜져있는지를 확인한게 되는거다.
아주 운좋게 기본 tc가 맞아서 맞는건줄...
()를 써주어야 올바르게 작동한다.
==END==
728x90
반응형
'컴퓨터 > 알고리즘' 카테고리의 다른 글
[BOJ] 2573 빙산 (0) | 2021.02.23 |
---|---|
[SWEA] 9700. USB 꽂기의 미스터리 (문제 꼼꼼히 읽어야하는 이유) (0) | 2021.02.20 |
[SWEA] 10570. 제곱 팰린드롬 수 (0) | 2021.02.16 |
[SWEA] 11387. 몬스터 사냥 (float대신 double을 써야하는 이유) (0) | 2021.02.15 |
[BOJ] 2839. 설탕배달 (0) | 2021.02.10 |