具体例子:
我有这个数字列表:1,2,4,8,16 结果:6
使用仅使用加法且仅使用2个数字的结果6的唯一可能性 4和2
有可能在数学,php或sql中找到这两个数字'2'和'4' 结果'6'与此列表(1,2,4,8,16)仅使用2个数字?
感谢您的帮助, 杰斯
答案 0 :(得分:7)
显然,您正在尝试查看位是否已打开。请考虑以下代码:
$bitOn = 6 & 2;
结果将是true
,因为2
位已打开。从中您可以推导出一个解决方案,您可以在列表中迭代并比较每个值以确定哪些位是打开的。
以下是PHP Bitwise operators的文档。
答案 1 :(得分:2)
您可以使用SQL获取所有这些对:
select l1.num as num1, l2.num as num2
from list l1 join
list l2
on l1.num + l2.num = 6 and
l1.num < l2.num;
您可以在SQL Fiddle here上看到这一点。
答案 2 :(得分:1)
在sql中:
SELECT t.number, tt.number
from number_table t, number_table tt
where t.number<>tt.number and t.number+tt.number=@result
答案 3 :(得分:1)
PHP:
$array = explode(",", "1,2,4,8,16");
$result = 6;
foreach($array as $number) {
foreach($array as $second_number) {
$sub_result = $number + $second_number;
if($sub_result === $result) {
echo "Found match! It's " . $number . "+" . $second_number . "<br />";
}
}
}
输出如下:
Found match! It's 2+4
Found match! It's 4+2