0 0

一道面试题10

已知一个集合,{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 异或弄过.
2009年12月29日 10:40

4个答案 按时间排序 按投票排序

0 0

采纳的答案

思路: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);
}
loop ++;
//x=x/2
x = x>>1;
if(x == 0)
break;
}
}

2009年12月29日 11:17
0 0

		int n = 13653333;
		for (int i = 0; i < 32; i++) {
			if ((1 << i & n) != 0)
				System.out.println(1 << i & n);
		}

2009年12月29日 11:00
0 0

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 

大学线性代数习题.

怎么弄,我不会

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

2009年12月29日 10:40
0 0

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 

大学线性代数习题.
对角矩阵.

2009年12月29日 10:40

相关推荐

Global site tag (gtag.js) - Google Analytics