Algorithm/Algorithms Practice
[SWEA/C++] 이진수 표현(10726번)
Patrick_
2022. 8. 23. 15:05
1. 개요
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
※ 본 문제는 SW Expert 아카데미의 문제이므로 무단으로 복제 X
1-1. 설명
정수 N, M이 주어질 때 M의 이진수 표현 마지막 N 비트가 모두 1로 켜져있는지 판별하는 프로그램을 작성한다.
1-2. 제한 사항
- 각 테스트 케이스의 첫 줄에는 N,M이 주어짐
- N은 1이상 30이하의 자연수, M은 0 이상 10^8 이하의 정수
2. 구현
2-1. 풀이
비트 연산자를 통해서 풀면 쉽게 풀린다.
2-2. 코드
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T, N, M, num, currentBit;
cin>>T;
string result[2] = {"OFF", "ON" };
for(test_case = 1; test_case <= T; ++test_case)
{
cin >> N >> M;
for (int i = 0; i < N; i++) {
int currentNum = (M >> i) % 2;
if (currentNum != 1) {
currentBit = 0;
break;
}
else if (currentNum == 1 && i == N - 1) currentBit = 1;
}
cout << "#" << test_case << " " << result[currentBit] << "\n";
}
return 0;
}