AnEasyProblem/김태진 (rev. 1.1)
Status ¶
Problem | 2453 | User | jereneal20 |
Memory | 388K | Time | 125MS |
Language | GCC | Result | Accepted |
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까지 줄였으나, 더 줄일 생각은 아직 별로 들질 않네요-ㅎㅎㅎ