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;
}

作者:涵曦www.hanxi.cc
出处:hanxi.cnblogs.com
GitHub:github.com/hanxi
Email:im.hanxi@gmail.com
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

《 Skynet 游戏服务器开发实战》

原文地址:https://www.cnblogs.com/hanxi/p/2001596.html