ZOJ1383_二进制数(Binary Numbers)_Central Europe 2001,Practice

题目描述:

  给定一个正整数n,要求输出对应的二进制数中所有数码‘1’的位置。注意最低位为第0位。例如13的二进制形式为1101,因此数码1的位置为:0,2,3.

输入描述:

  输入文件中的第一行为一个正整数d,表示输入文件中测试数据的个数,1<=d<=10,接下来有d个测试数据。每个测试数据占一行整数n,1<=n<=10^6.

输出描述:

  输出包括d行,即输入文件中的每个测试数据,输出一行。第i行,1<=i<=d,以升序的顺序输出第i个测试数据中的整数的二进制形式中所有数码1的位置,位置之间有一个空格,最后一个位置后面没有空格。

样例输入:

  2

  13

  127

样例输出:

  0 2 3

  0 1 2 3 4 5 6

实现代码:

View Code
#include <stdio.h>
#include
<stdlib.h>

int main()
{
int i, d;//d为输入文件中测试数据的个数,
int flag;//判断是第一个数前不输出空格
scanf_s("%d", &d);
for (i = 0; i<d; i++)
{
int n, pos = 0;//n为输入的整数,pos为计数器
scanf_s("%d", &n);
flag
= 0;
while (n != 0)
{
if (n%2 == 1)
{
flag
++;
if (flag == 1)
{
printf(
"%d", pos);
}
else
{
printf(
" %d", pos);
}
}
n
= n/2;
pos
++;
}
}
return 0;
}

posted @ 2011-03-31 22:41  涵曦  阅读(2038)  评论(0编辑  收藏  举报