0
已解决
董宇昊
初级启示者
初级启示者
#include<iostream>
#include<cmath>
#include<cstdio>
#include<string>
using namespace std;
//把十进制数n转换成二进制数输出
int n,a[105],i;
int main(){
cin>>n;
while(abs(n)){ //除2取余
a[++i]=n%2;
n/=2;
}
for(int j=i;j>=1;j--){ //倒序输出
cout<<a[j];
}
return 0;
}
编译都过不了
3670 -2进制(scale)
经验值:1200
题目描述 Description
聪明的你们应该知道2进制从低位到高位(即从右向左)的位权依次是1、2、4、8…。
而现在我们需要你计算的是一个新的进制——-2进制,-2进制它的从低位到高位的位权依次是1、-2、4、-8…。虽然与2进制有一点不一样的地方,但是能表示任何的整数,比如-2进制的1,110,111,100分别表示十进制的1,2,3,4,而-2进制的11,10,1101,1100则表示-1,-2,-3,-4。
如果现在给你一个十进制的整数n,你能求出它的-2进制数吗?
输入描述 Input Description
一行,一个十进制整数n。
输出描述 Output Description
一个-2进制数。如果数字不为0,不能有前导0。
样例输入 Sample Input
-13
样例输出 Sample Output
110111
数据范围及提示 Data Size & Hint
数据范围:-2000000000≤n≤2000000000
样例解释:
从右向左:
1 * 1 + 1 * (-2) + 1 * 4 + 0 * (-8) +1 * 16 + 1 * (-32) = -13