직대딩 블로그
2진수 변환후 1의 개수 세주기 본문
10진수로 받아온 숫자를 저장하고
먼저 2진수로 변환후에 1의 개수를 세준다.
그 후에 1씩 더해주며 배열을 새로 초기화해주면서
2진수로 변환후에 1의개수를 세주고 비교해줬다.
#include<stdio.h>
#include<string>
int nBN(int n) {
int a[50] = { 0, };
int i = 0;
int m = n;
int cnt1 = 0;
//----- cnt 1 구하기 -----
while (n != 0) {
a[i] = n % 2;
n = n / 2;
i++;
}
while (i != 0) {
i--;
if (a[i] == 1)cnt1++;
}
// cnt2
while(1) {
int b[50] = { 0, };
i = 0;
m++;
int s = m;
int cnt2 = 0;
while (m != 0) {
a[i] = m % 2;
m = m / 2;
i++;
}
while (i != 0) {
i--;
if (a[i] == 1)cnt2++;
}
if (cnt2 == cnt1) {
printf("%d\n", s);
break;
}
m = s;
}
return 0;
}
int main() {
int n;
scanf("%d", &n);
nBN(n);
return 0;
}
'프로그래밍 > C' 카테고리의 다른 글
C언어 정리 2 (0) | 2023.03.12 |
---|---|
C언어 정리 (0) | 2023.03.12 |
지그재그로 출력하기 (0) | 2023.03.12 |
마방진 만들기 (0) | 2023.03.12 |
10진수 -> 2진수 변환 (0) | 2023.03.12 |
Comments