文章
19
粉丝
0
获赞
1
访问
401
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
int m;
string s;
if(n==0){
cout<<"0";
}else{
while(n!=0){
m=n%(-2);
n=n/(-2);
if(m<0){
m=1;
n++;
}
s=s+to_string(m);
}
for(int i=s.length()-1;i>=0;i--){
cout<<s[i];
}
}
cout<<endl;
}
return 0;
}
这个题需要注意的地方有两点:
1.特殊值的考虑,需要考虑输入为0的情况;
2.对于负二进制的计算:m为余数,n为被除数;需要注意的是当余数小于0时(只能是-1),所以直接修改为1即可,此时会发现除数每次都少1,所以需要除数++;(因为余数小于0时,即为-1时,需要把它变为1,此时正好需要除数+1)。
登录后发布评论
暂无评论,来抢沙发