编程题
二进制数 ## 来源 Central Europe 2001, Practice (ZOJ1383) ## 题目描述 给定一个正整数n,要求输出对应的二进制数中所有数码"1"的位置。注意最低位为第0位。例如13的二进制形式为1101,因此数码1的位置为:0,2,3。 ## 输入描述 输入文件的第1行为一个正整数d,表示测试数据的个数,1≤d≤10,接下来有d个测试数据。每个测试数据占一行,只有一个整数n,1≤n≤10^6。 ## 输出描述 输出包括d行,即对每个测试数据,输出一行。第i行,1≤i≤d,以升序的顺序输出第i个测试数据中的整数的二进制形式中所有数码"1"的位置,位置之间有1个空格,最后一个位置后面没有空格。 ## 样例输入 ```txt 2 13 127 ``` ## 样例输出 ```txt 0 2 3 0 1 2 3 4 5 6 ``` ## 提示 (1) 对输入的整数n,依次用2去整除,用变量pos充当计数器(代表二进制的位),如果得到的余数为1,则输出pos,否则不输出;pos的初值为0,每次将n除以2后,pos自增1。 (2) 输出时要求每两个位置之间有1个空格。解决方法是在第1个位置之前不输出空格,然后在接下来的所有数码"1"的位置之前输出一个空格,详见4.6.2节。
查看答案
赣ICP备20007335号-2