本题值得注意的点:unsigned int 以及除去前导0,我们先讨论有前导0的写法,有前导0本质就是将int的32位遍历一遍找出一个位是什么,去掉前导0的话就是找到最后一个1,其实是一个while每次右移一位直到为0 即可,本题还有一个坑,就是输入可能为0,但是0进不了while循环,所以需要特判一下。
以及我们用字符串存储答案,但是字符串存储的是反着的,所以需要reverse一下字符串
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
unsigned int n;
int main()
{
while(cin>>n)
{
string s="";
while(n)
{
if(n&1)
{
s+='1';
}
else
{
s+='0';
}
n>>=1;
}
if(s=="")s="0";
reverse(s.begin(),s.end());
cout<<s<<endl;
}
return 0;
}
细节决定成败!