직대딩 블로그

nextBigNumber (2진수) 본문

프로그래밍/C

nextBigNumber (2진수)

Jae Yeon 2023. 3. 12. 17:52

받은 숫자의 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