4188. 进制转换

4188. 进制转换

Constraints

Time Limit: 1 secs, Memory Limit: 256 MB

Description

 

输入一个非负的十进制整数,将其转为二进制.

 

Input

 

输入的第一行是一个整数T,表示总共有T组数据.

接下来的T行,每行是一组数据,每组数据是一个待转换的十进制整数n(0<=n<2^31).

 

 

Output

 

对于每个十进制数,输出其对应的二进制数,每个数占一行. 注意输出的二进制数不要有多余的前导0.

 

Sample Input

3
4
1
20

Sample Output

100
1
10100

Problem Source

计算机科学与技术专业11级3班期中考试

觉得问题的关键就是在于如何把10进制的字符串变成二进制整数数组的转化。

// Problem#: 4188
// Submission#: 1984616
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include<iostream>
#include<string>
#include<cmath>
using namespace std;


int main()
{       
    int T,i;
    cin>>T;
    for(i=0;i<T;i++){
        string a;
        cin>>a;
        while(a.size()<32){
            a='0'+a;
        }
        int b[32]={0};
        int x=31;
        for(;x>=0;x--){
            b[x]+=((a[x]-'0')*(pow(10,31-x)/pow(2,31-x)));
            if(b[x]>=2){
                b[x-1]+=(b[x]/2);
                b[x]%=2;
            }
        }
        x=0;
        while(b[x]==0 && x!=31){
            x++;
        }
        for(;x<32;x++){
            cout<<b[x];
        }
        cout<<endl;
    }
    return 0;
}                                 

 

posted @ 2013-03-24 12:07  javawebsoa  Views(236)  Comments(0Edit  收藏  举报