xiaozhen57520 2009-12-29 10:40
浏览 151
已采纳

一道面试题

已知一个集合,{1,2,4,8,16.....}
a + b + c + n = x
a b c ...都是集合里的任意数,x已知,求a b c...值
比如
a(2) + b(8) + c(16) = 26
a(1) + b(2) = 3
a(1) + b(4) + c(8) = 13
a(1) + b(2) + c(4) + d(8) = 15 
问题补充

抛出异常的爱 写道
xiaozhen57520 写道
已知一个集合,{1,2,4,8,16.....}
a + b + c + n = x
a b c ...都是集合里的任意数,x已知,求a b c...值
比如
a(2) + b(8) + c(16) = 26
a(1) + b(2) = 3
a(1) + b(4) + c(8) = 13
a(1) + b(2) + c(4) + d(8) = 15 

大学线性代数习题.

怎么弄,我不会
问题补充
抛出异常的爱 写道
xiaozhen57520 写道
抛出异常的爱 写道
xiaozhen57520 写道
已知一个集合,{1,2,4,8,16.....}
a + b + c + n = x
a b c ...都是集合里的任意数,x已知,求a b c...值
比如
a(2) + b(8) + c(16) = 26
a(1) + b(2) = 3
a(1) + b(4) + c(8) = 13
a(1) + b(2) + c(4) + d(8) = 15 

大学线性代数习题.

怎么弄,我不会

看错题了....
应该是二进制的问题.

见过,看见别人用Xor 异或弄过.
  • 写回答

4条回答 默认 最新

  • liuiyu220 2009-12-29 11:17
    关注

    思路:x这个数是2的n次幂的和。分解x,如x转换成2机制数1010就表示2(10)+8(1000),下面是算法
    public static void getRes(int x){
    //loop记录位数
    int loop = 0;
    int i;
    while(true){
    i=x&1;
    //x的最后一位是否是1
    if(i == 1){
    //1左移位数就是结果
    //相当于2的loop次幂
    System.out.println(i< }
    loop ++;
    //x=x/2
    x = x>>1;
    if(x == 0)
    break;
    }
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入