计蒜客---N的-2进制表示

时间:2023-01-16 21:00:32

对于十进制整数N,试求其-2进制表示。 例如,因为  1*1  +  1*-2  +  1*4  +  0*-8  +1*16  +  1*-32  =  -13  ,所以(-13)_10  =  (110111)_-2。

输入一个整数,代表要转换的十进制数。

输出一个整数,代表N的-2进制表示。

|N|  < =  2000000000

样例输入

-13

样例输出

110111
 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <iomanip>
#include <stdio.h>
#include <cmath>
#include <ctime>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <stdlib.h>
using namespace std;
#define lowbit(x) (x&(-x))
#define max(x,y) (x>y?x:y)
#define min(x,y) (x<y?x:y)
#define MAX 100000000000000000
#define MOD 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define PI 3.141592653589793238462
#define INF 0x3f3f3f3f3f
#define mem(a) (memset(a,0,sizeof(a)))
typedef long long ll;
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
bool cmp(int x,int y)
{
return x>y;
}
const int N=;
const int mod=1e9+; int main(){
int n;
cin>>n;
stack<int> s;
if(n==){
cout<<;
return ;
}
while(n){
if(n%-<){
s.push(n%-+ );
n=n/-+;
}else{
s.push(n%-);
n/=-;
}
}
while(!s.empty()){
cout<<s.top();
s.pop();
}
return ;
}