U E D R , A S I H C RSS

An Easy Problem/김태진

Status

Problem 2453Userjereneal20
Memory388KTime125MS
LanguageGCCResultAccepted

Idea

  • 비트맵연산을 적당히 써서 했습니다. 1의 갯수를 for문으로 구하고, 자신보다 큰 숫자가 1의갯수가 처음숫자와 같을때까지 1씩 늘려가며 계산시켰습니다.

Source Code

#include <stdio.h>

int bincount(int X);

int main()
{
    int N,n,k=0;
    while(1){
        scanf("%d",&N);
        if(N==0) break;
        k=bincount(N);
        for(n=N+1;k!=bincount(n);n++){}
        printf("%d\n",n);
    }
    return 0;
}

int bincount(int X)
{
    int nf,kf=0;
    for(nf=X;nf>0;nf=nf>>1){
        if(nf%2==1) kf++;
    }
    return kf;
}

Trial and error

  • 분명 처음에는 아 뭐 이런거 쯤이야 어렵지 않겠쿤! 하고 문제에 들이댔습니다. .. 그러나 나는 10진수로 보이지만 컴터는 2진수로 알고있겠지!! 라고 생각하고 계산하려해도 당최 쉽지가 않더군요 -- 한참 고민하다 진경이가 힌트를 준 덕분에 해결했습니다. 한번만에 accept! 코드길이는 198B까지 줄였으나, 더 줄일 생각은 아직 별로 들질 않네요-ㅎㅎㅎ
    • 한번만에 accept 부럽다아-. 난 항상 고루고루 에러를 겪는데ㅋㅋㅋㅋ 덕분에 기를 빨려서 그런가 두번째 문제가 이해가 안간다 ㅠㅠ 왜 A1B3C1A2 요런식으로 가는거고 위에 3은 뭐고 으어어... -강소현
      • 이번건 문제 잘 읽어보고 충분히 체크해본다음에 제출해서 바로 accept된거같아요. (졸리점퍼때처럼 엄청 복잡한 알고리즘을 쓰지 않아서기도 하지만요 --) 나이트저니는.. 으아아아= -김태진

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2011-06-25 13:51:26
Processing time 0.0864 sec