文章
1
粉丝
351
获赞
0
访问
8.1k
借鉴别人的,终于理解了
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin >> n){
int s[19];//1e5约等于2的19次方,18不行
int cnt = 0;
while(1){//不能用n!=0判断,因为n有负数情况
int w = (n % (-2));
if(w >= 0){ //余数>=0时,和平时的一样
s[cnt++] = w;
n /= (-2);
}
else{ //余数<0时,余数+1,因为负2,余数只可能是-1 0 1,-1的时候就加2,保证输出只有0和1
s[cnt++] = w + 2;
n = n/(-2) + 1;//本来余数是-1,现在要把余数变为1,可以使商+1,这样相当于商乘以-2小了-2,所以余数是1.
} &n...
登录后发布评论
暂无评论,来抢沙发