文章

1

粉丝

351

获赞

0

访问

8.1k

头像
负二进制
P1097
发布于2021年2月18日 23:16
阅读数 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...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发