10진수를 입력받아 2진수로 변환한 후 이 수보다 큰 수 중 가장 작은 수를 구하여라.

단, 주어진 수를 2진수로 변환하였을 때 1의 개수와 구하는 큰 수의 1의 개수는 같아야 한다.

단, 주어진 정수는 1보다 크거나 같고 1000000보다 작거나 같다

 

예)

입력 : 1

출력 : 2

 

입력 : 4

출력 : 8

 

입력 : 78

출력 : 83


Find next biggest binary number. Condition : Number of 1 should be same between input & output.


/* Written by rinehart@naver.com     */
/* 2009. 2. 10.                                */
/* Tested on Windows, Cygwin, gcc  */

#include <stdio.h>

int main(void)
{
    int     v_input = 0;
    int     v_temp = 0;
    int     v_output = 0;
    int     v_nb_of_1_input = 0;
    int     v_nb_of_1_output = 0;   
    int        i = 0;

    // input number
    printf ("Input devimal number : ");
    scanf("%d", &v_input);

    // check input
    if (v_input < 1 || v_input > 1000000)
    {
        printf ("Wrong number.\n");
        return -1;
    }

    //Make binary & count number of 1
    v_temp = v_input;
   
    while (v_temp > 0)
    {
        if (v_temp % 2)        //Is ther 1?
            v_nb_of_1_input++;    //counting
           
        v_temp = v_temp/2;
    }

    //Find next biggest number : Same number of 1
    v_output = v_input +1;
   
    while (v_output < 1000000)
    {
        v_temp = v_output;
        v_nb_of_1_output = 0;

        while (v_temp > 0)
        {
            if (v_temp % 2)     //Is ther 1?
                v_nb_of_1_output++;    //counting
               
            v_temp = v_temp/2;
        }

        //Are number of 1 values same?
        if (v_nb_of_1_input == v_nb_of_1_output)
            break;    //Exit while loop

        v_output++;
    }
   
    // print out the result
    printf ("Result : %d\n", v_output);

    return 0;
}


Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

  1. jja
    2009.08.03 19:24
    댓글 주소 수정/삭제 댓글
    자신의 컴퓨터가 처리할 수 있는 가장 큰 수와 작은 수는 어떻게 구할 수 있나요?
    C#코드가 필요합니다.
    • rinehart@naver.com
      2009.08.07 09:01
      댓글 주소 수정/삭제
      MSDN을 찾아보시지요. 윈도우즈 컴퓨팅은 익숙하지가 못합니다만, 말씀하신 것과 관련된 API나 상수값이 정의되어 있을 것입니다.
  2. 2009.08.06 21:07 신고
    댓글 주소 수정/삭제 댓글
    MSDN을 찾아보시지요. 윈도우즈 컴퓨팅은 익숙하지가 못합니다만, 말씀하신 것과 관련된 API나 상수값이 정의되어 있을 것입니다.


BLOG main image
일상, 프로그래밍, IT 그리고 직장생활, Dive, 여행 by 지그프리드

카테고리

Class List (402)
Studies (30)
Exercise & Quizz (10)
Term Project (0)
ECIM list (Help!) (10)
Issues & News (0)
Gossip about IT & Job (22)
Tools (2)
Think about the Justice (23)
Book Review (170)
조엘 온 소프트웨어(번역) (28)
Diary (87)
Vacations (9)
Clash of clans 클래시 오브.. (11)

글 보관함

달력

«   2020/07   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Total : 320,922
Today : 21 Yesterday : 45