题目:
经理有三个女儿,年龄相加为13。三个女儿的年龄相乘为经理的年龄,经理的一个手下知道 经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?
计算:
function getage($sum){ $agelimit = 121; // 最大年龄121岁 $agefrist = 18; //假设最小生育年龄 18岁 $posible = []; for ($c1 = 1; $c1 = $agefrist) { $arr = [$c1, $c2, $c3]; asort($arr); $age = implode('-', $arr); if (!in_array($age, $posible)) { $posible[] = $age; } } } } } return $posible;}
输出:
var_dump(getage(13));/**array (size=12) 0 => string '1-3-9' (length=5) 1 => string '1-4-8' (length=5) 2 => string '1-5-7' (length=5) 3 => string '1-6-6' (length=5) 4 => string '2-2-9' (length=5) 5 => string '2-3-8' (length=5) 6 => string '2-4-7' (length=5) 7 => string '2-5-6' (length=5) 8 => string '3-3-7' (length=5) 9 => string '3-4-6' (length=5) 10 => string '3-5-5' (length=5) 11 => string '4-4-5' (length=5)**/
以上输出答案错误。如何解答本题?
回复内容: 题目:
经理有三个女儿,年龄相加为13。三个女儿的年龄相乘为经理的年龄,经理的一个手下知道 经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。请问三个女儿的年龄分别是多少?为什么?
计算:
function getage($sum){ $agelimit = 121; // 最大年龄121岁 $agefrist = 18; //假设最小生育年龄 18岁 $posible = []; for ($c1 = 1; $c1 = $agefrist) { $arr = [$c1, $c2, $c3]; asort($arr); $age = implode('-', $arr); if (!in_array($age, $posible)) { $posible[] = $age; } } } } } return $posible;}
输出:
var_dump(getage(13));/**array (size=12) 0 => string '1-3-9' (length=5) 1 => string '1-4-8' (length=5) 2 => string '1-5-7' (length=5) 3 => string '1-6-6' (length=5) 4 => string '2-2-9' (length=5) 5 => string '2-3-8' (length=5) 6 => string '2-4-7' (length=5) 7 => string '2-5-6' (length=5) 8 => string '3-3-7' (length=5) 9 => string '3-4-6' (length=5) 10 => string '3-5-5' (length=5) 11 => string '4-4-5' (length=5)**/
以上输出答案错误。如何解答本题?
做这种题我向来不行, 但是 太明显了, 你漏了几个条件:
经理的一个手下知道 经理的年龄,但是不知道其三个女儿的年龄。经理告诉手下有一个女儿头发是黑色的,手下立即知道了三个女儿的年龄。-> 说明 针对 经理的年龄(三女儿年龄乘积), 女儿的年龄有多种选择.
经理告诉手下有一个女儿头发是黑色的 -> 应该是 经理告诉手下只有一个女儿头发是黑色的, 说明 其他两个是小小孩, 头发不黑? (逻辑对否? 网上看到的...)
所有输出(最后一行是结果)
1, 1, 11 = 111, 2, 10 = 201, 3, 9 = 271, 4, 8 = 321, 5, 7 = 352, 2, 9 = 361, 6, 6 = 362, 3, 8 = 482, 4, 7 = 562, 5, 6 = 603, 3, 7 = 633, 4, 6 = 723, 5, 5 = 754, 4, 5 = 80found [2,2,9,36]
我的二杆子 php 写得太恼火了,还是写 js 顺手,哈哈!
python 代码
#!/usr/bin/python# -*- coding:utf-8 -*-if __name__ == '__main__': s1 = [tuple(sorted([x, y, z])) for x in range(1,13) for y in range(1, 13) for z in range(1, 13) if x + y + z == 13 and 50 > x * y * z > 18] s2 = set(s1) result = [i for i in s2 if 35 > i[0] * i[1] * i[2] - max(i) > 18] print result