<접근 방식>
주어진 10진수를 2진수로 나타내어 1의 위치를 표시하는 문제이다.
%와 / 연산자를 통해 이진수를 구하고 1인 경우만 출력해주도록 한다.
테스트 케이스마다 자리를 표시하는 count를 0으로 초기화해야 한다.
<전체 코드>
#include <iostream>
using namespace std;
int T, n, num;
int main()
{
cin.tie(0);
ios_base::sync_with_stdio(false);
cin >> T;
while (T--) {
cin >> n;
int count = 0;
while (n > 0) {
num = n % 2;
n /= 2;
if (num == 1)
cout << count << " ";
count++;
}
}
}
<문제 링크>
https://www.acmicpc.net/problem/3460
3460번: 이진수
양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
www.acmicpc.net
'BOJ' 카테고리의 다른 글
[BOJ] 1735번 - 분수 합 (0) | 2022.06.15 |
---|---|
[BOJ] 2609번 - 최대공약수와 최소공배수 (0) | 2022.06.14 |
[BOJ] 2501번 - 약수 구하기 (0) | 2022.06.14 |
[BOJ] 2740번 - 행렬 곱셈 (0) | 2022.06.14 |
[BOJ] 17298번 - 오큰수 (0) | 2022.06.14 |