编写一个方法,将2个数字作为输入,并返回第三个不同的数字

时间:2017-10-12 06:07:11

标签: algorithm bit-manipulation

我正在努力解决这个问题。 您应该在代码中不使用任何条件/循环返回不同的数字。

我的想法是,解决方案的方向可能是使用位操作?

3 个答案:

答案 0 :(得分:1)

要确保第三个数字不同,可以通过获取已更改的原始数字的一部分来构成它。例如,如果数字是123和789,则可以取第一个数字的“2”,使其为“3”,将第二个数字设为“9”,并使其为“0”。将这两个连接起来得到“30”。这不能是第一个数字,因为倒数第二个数字是不同的,它不能是第二个数字,因为最后一个数字是不同的。

这可以在没有循环和ifs(假设整数运算)的情况下表达:

(a+10)/10%10*10 + (b+1)%10

答案 1 :(得分:1)

((a&1)|(b&2))^3是0到3之间的数字,与第一位中的a不同,并且与第二位中的b不同。 (这使用C表示法:&是按位的,|是按位的,而^是按位的xor。)

答案 2 :(得分:1)

如果两个给定的数字是:

  • INPUT1
  • 输入2

你可以简单地回复:

abs(intput1) +abs(input2) +1

您需要致电abs()以避免1 + (-1) +1 = 1

之类的内容