游客 Signup | Login
中文 | En

1058 - 寻找最低数

给你一个正整数A(1<=A<=100),输出A的最低数。
例如,给你A=26,我们可以将A化成二进制为11010,则A的最低数是10,输出10的十进制为2。
再例如,给你A=88,我们可以将A化成二进制为1011000,则A的最低数是1000,输出为8。

Input

输入包含多组测试样例。每行输入一个正整数A(1<=A<=100)。当输入0时,输入结束。

Output

对于每一个输入,输出对应的最低数。

Examples

Input

26
88
0

Output

2
8

Solution C

#include<stdio.h>

int main()
{
	int n,i,j,t,k,a[10];
	while(scanf("%d",&n)!=EOF,n)
	{
		i=0;
		while(n)
		{
			a[i]=n%2;
			n/=2;
			i++;
		}
		t=0;
		for(j=0;j<i;j++)
		{
			if(a[j]==0)
				t++;
			else
				break;
		}
		k=1;
		for(j=0;j<t;j++)
			k*=2;
		printf("%d\n",k);
	}
	return 0;
}

Solution C++

#include<stdio.h>

int main()
{
	int n,i,j,t,k,a[10];
	while(scanf("%d",&n)!=EOF,n)
	{
		i=0;
		while(n)
		{
			a[i]=n%2;
			n/=2;
			i++;
		}
		t=0;
		for(j=0;j<i;j++)
		{
			if(a[j]==0)
				t++;
			else
				break;
		}
		k=1;
		for(j=0;j<t;j++)
			k*=2;
		printf("%d\n",k);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题