题目
求一个十进制的负二进制。
分析
用反向取余法求出答案就行了。
代码
#include <cstdio>
#include <cctype>
using namespace std;
int in(){
int ans=0,f=1; char c=getchar();
while (!isdigit(c)&&c!='-') c=getchar();
if (c=='-') f=-f,c=getchar();
while (isdigit(c)) ans=ans*10+c-48,c=getchar();
if (!ans) putchar('0');
return ans*f;
}
int abs(int x){return (x>0)?x:-x;}
void dfs(int n){
if (!n) return;
dfs(-(n-abs(n%2))/2);//除以-2(符号取反)
putchar(48+abs(n%2));//取余
}
int main(){
dfs(in());
return 0;
}