Tidy Bits
Limits
1s, 512 MB
Read
an integer variable, and determine the smallest positive integer that
has the same number of 1s in its bit representation as the number you
read.
The following numbers all have the same number of 1s in their bit representation: 7 (
The following numbers all have the same number of 1s in their bit representation: 7 (
111
), 13 (1101
), 37 (100101
), etc. And among all such positive integers, 7 is the smallest number that has 3 1s in its bit representation.Input
The input will contain an integer A (0 ≤ A < 1000000).
Output
Print the smallest positive integer that has the same number of 1s in its bit representation as A.
#include<stdio.h>
int main()
{
int n,s,temp,count=0,c=0,i,p,result;
scanf("%d", &n);
s=n;
while(n!=0)
{
temp=n%2;
if(temp==1)
count++;
n=n/2;
}
for(i=s-1;i>=1;i--)
{
p=i;
while(p!=0)
{
temp=p%2;
if(temp==1)
c++;
p=p/2;
}
if(c==count)
result=i;
c=0;
}
printf("%d",result);
}