程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU1390:Binary Numbers

HDU1390:Binary Numbers

編輯:C++入門知識

Problem Description
Given a positive integer n, find the positions of all 1's in its binary representation. The position of the least significant bit is 0.


Example

The positions of 1's in the binary representation of 13 are 0, 2, 3.


Task

Write a program which for each data set:

reads a positive integer n,

computes the positions of 1's in the binary representation of n,

writes the result.

 


Input
The first line of the input contains exactly one positive integer d equal to the number of data sets, 1 <= d <= 10. The data sets follow.

Each data set consists of exactly one line containing exactly one integer n, 1 <= n <= 10^6.

 


Output
The output should consists of exactly d lines, one line for each data set.

Line i, 1 <= i <= d, should contain increasing sequence of integers separated by single spaces - the positions of 1's in the binary representation of the i-th input number.

 


Sample Input
1
13


Sample Output
0 2 3

 

題意就是求一個數字的二進制中1存在的位置

 

[cpp]
#include <stdio.h>  
#include <string.h>  
 
char str[1000000]; 
int main() 

    int t; 
    scanf("%d",&t); 
    while(t--) 
    { 
        int n,k = 0; 
        scanf("%d",&n); 
        while(n) 
        { 
            int r = n%2; 
            str[k++] = r+'0'; 
            n/=2; 
        } 
        str[k] = 0; 
        int i,flag = 0; 
        for(i = 0;i<k;i++) 
        { 
            if(str[i] == '1') 
            { 
                if(flag) 
                { 
                    printf(" %d",i); 
                } 
                else 
                { 
                    printf("%d",i); 
                    flag = 1; 
                } 
            } 
        } 
        printf("\n"); 
 
    } 
 
    return 0; 

#include <stdio.h>
#include <string.h>

char str[1000000];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        int n,k = 0;
        scanf("%d",&n);
        while(n)
        {
            int r = n%2;
            str[k++] = r+'0';
            n/=2;
        }
        str[k] = 0;
        int i,flag = 0;
        for(i = 0;i<k;i++)
        {
            if(str[i] == '1')
            {
                if(flag)
                {
                    printf(" %d",i);
                }
                else
                {
                    printf("%d",i);
                    flag = 1;
                }
            }
        }
        printf("\n");

    }

    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved