ACM:每行输入一个正整数n,找出与它对应的比它大的最小的且它们对应的二进制中1的个数一样多的正整数.

2014-11-24 13:30:52 · 作者: · 浏览: 90
#include
  
   

//每行输入一个正整数i,找出与他对应的比它大的最小的正整数且他们的二进制中1的个数一样多。

/*  样例输入:    样例输出:

            1			2
            2			4
            3			5
            4			8
           78			83
			0
*/
//78的二进制位1001110,有4个1;83比78大且83的二进制位1001011也是4个1.

int main()
{
	int count1,count2;//count1统计原数据对应的二进制中1的个数,count2...
	int a[100];//存输入的数字
	
	int i=0,len=0;//i是循环变量,len是数字个数

	int n;//n时输入数字的变量

	int A,B;//下面求余、相除、时需要用到的变量
	int temp=0;//判断是0还是1
	
	while(1)//循环输入多组数据直到输入的是0结束输入
	{
		scanf("%d",&n);	
		if(n==0)//输入0时结束输入,放在这里0的值就不会存到数组中了
			break;
		a[i]=n;
		i++;
		len++;
	}
	for(i=0;i