查找添加了哪些数字以生成结果

时间:2014-01-08 15:40:12

标签: php sql math

具体例子:

我有这个数字列表:1,2,4,8,16 结果:6

使用仅使用加法且仅使用2个数字的结果6的唯一可能性 4和2

有可能在数学,php或sql中找到这两个数字'2'和'4' 结果'6'与此列表(1,2,4,8,16)仅使用2个数字?

感谢您的帮助, 杰斯

4 个答案:

答案 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