60分选择题    2道编程题(40分):0.91 + 1  /* 定义函数f(x)表示 x 在二进制表示下 1 的个数。例如,9的二进制表示为1001,则f(9)=2。一个特工获取了一个重要情报,这个情报为一个非负整数x。他在传递情报的时候对这个数进行了处理,他将这个整数x乘上f(x) 后再发送出去。现在你得到了这份情报,你想知道处理前的数可能为多少?*/import java.util.*;// 过了91%class Main1{  public static void main(String args[])  {    Scanner cin = new Scanner(System.in);    long y = cin.nextLong();    if(y==0){      System.out.println(0);      System.out.println(0);      return;    }    int res = 0;    List<Long> list = new ArrayList<>();    for(int i=1; i<=64; i++){      if(y%i != 0){        continue;      }      int count = helper(y/i);      if(count == i){        res ++;        list.add(y/i);      }    }    System.out.println(res);    for(int i=0; i<list.size(); i++){      System.out.print(list.get(list.size()-1-i));      if(i != list.size()-1){        System.out.print(" ");      }    }  }    static int helper(long x){    int res = 0;    while(x!=0){      if(x%2==1){        res ++;      }      x /= 2;    }    return res;  }} /*小昱做了很久的实验得到了一个用正整数表示的实验数据,并记录在了纸上。但是由于做完实验太过激动,他一不小心把墨水打翻溅在了纸上,导致数据中一些位置上的数字看不清楚。他仍记得这个数据有以下三个特征:1. 这个数是正整数,且没有前导零(即数的最高位不是0)2. 这个数任意两个相邻数位的数字不同3. 这个数可以被3整除他现在很关心在满足以上特征的条件下,这个数字最小为多少。 */import java.util.*;// 全过class Main2{  public static void main(String args[])  {    Scanner cin = new Scanner(System.in);    String str = cin.nextLine();    char[] chs = str.toCharArray();    int total = 0;    int count = 0;    int len = str.length();    for(int i=0; i<len; i++){      if(chs[i]=='?'){        count++;      }else{        total += (chs[i]-'0');      }    }    if(count==0){      System.out.println(str);      return;    }    for(int i=0; i<len; i++){      if(chs[i]!='?'){        continue;      }      if(count==1){        int left = -1, right = -1;        if(i>0){          left = chs[i-1]-'0';        }else{          left = 0;        }        if(i<len-1){          right = chs[i+1]-'0';        }        int x = total%3;        x = (3-x)%3;        while(left==x || right==x){          x += 3;        }        chs[i] = (char)('0'+x);        break;      }      count--;      if(i==0){        if(chs[i+1]=='1'){          chs[i] = '2';          total += 2;        }else{          chs[i] = '1';          total += 1;        }      }else{        if(chs[i-1]=='0' || chs[i+1]=='0'){          if(chs[i-1]=='1' || chs[i+1]=='1'){            chs[i] = '2';            total += 2;          }else{            chs[i] = '1';            total += 1;          }        }else{          chs[i] = '0';        }      }    }    for(int i=0; i<len; i++){      System.out.print(chs[i]);    }  }}
点赞 5
评论 1
全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下 HR 会来跟你谈。” 我当时脑子直接宕机,一句话都没憋出来。后面 HR 找我谈话,直属领导也在旁边。HR 说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务