Resource limitation
Time limitation: 1.0s Memory limitation: 256.0MB
Problem description
Given a decimal integer N, calculate its -2 binary representation.
Input format
First line: an integer N, representing the decimal number to be converted.
Output format The
first line: the -2 hexadecimal representation of N.
Sample input-
13
Sample output
110111
The data size and the agreed
100% data meet:|n|<=2000000000.
Tips
negative binary:
there is such a number 100110, it is a -2 base number, the method to convert it to a decimal number is 1*(-2)5 + 0*(-2)4 + 0*(- 2)3 + 1*(-2)2 + 1*(-2)1 + 0*(-2)0 is equal to -30.
110111 is converted into a negative binary number: 1*(-2)5 + 1*(-2)4 + 0*(-2)3 + 1*(-2)2 + 1*(-2)1 + 1* (-2) 0 is equal to -13
In the -2 base number, the number in each position can only be 0 or 1. It can be proved that every decimal number can be expressed as a -2 base number, and the way of expression is unique.
#include<iostream>
#include<vector>
using namespace std;
vector<int> vec;
int main()
{
int n ;
scanf("%d",&n);
if(n==0){
printf("0\n");
return 0;
}
while(n!=1){
if(n%(-2)==0){
n/=(-2);
vec.push_back(0);
}else{
vec.push_back(1);
if(n>0){
n=n/(-2);
}else{
n=n/(-2)+1;
}
}
}
vec.push_back(1);
for(int i=vec.size()-1;i>=0;i--){
printf("%d",vec[i]);
}
printf("\n");
return 0;
}