직대딩 블로그
nextBigNumber (2진수) 본문
받은 숫자의 1의 개수를 세준 후
받은 숫자를 1씩 더해주며 2진수로 바꿔준 후
1의 개수를 세준다
원래 숫자와 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' 카테고리의 다른 글
마방진 만들기 (0) | 2023.03.12 |
---|---|
10진수 -> 2진수 변환 (0) | 2023.03.12 |
지그재그로 배열에 저장 (0) | 2023.03.12 |
화폐 매수 구하기 2 (0) | 2023.03.12 |
화폐 매수 구하기 (0) | 2023.03.12 |
Comments