本猿在朋友圈和群里多次看到这样一道智力题(见下图),一看就是一道需要乱扯的无聊的题目。好吧,试试就试试。
只能填数字啊,那就不能从“单位”的角度去乱搞了,那就用进制吧。给出的数字中出现了9,那就从十进制开始试试,
代码如下:
<?php
/**
* number从base进制转为十进制
**/
function show_convert_to_base_10 ($number, $base)
{
if (strstr ($number, '.'))
{
list ($integer, $decimal) = explode ('.', $number);
}
else
{
$integer = $number;
}
$integer = strrev ($integer);
$length = strlen ($integer);
for ($pos = 0; $pos < $length; ++$pos)
{
$digit = $integer[$pos];
if (eregi ('[a-z]', $digit))
{
$digit_value =
(ord (strtolower ($digit))
- ord ('a')) + 10;
$digit = "$digit ($digit_value)";
}
else
{
$digit_value = $digit;
}
$result = $digit_value * pow ($base, $pos);
$sums[] = $result;
}
if (isset ($decimal))
{
$decimal = '0'.$decimal;
$length = strlen ($decimal);
for ($pos = 1; $pos < $length; ++$pos) {
$digit = $decimal[$pos];
if (eregi ('[a-z]', $digit))
{
$digit_value =
(ord (strtolower ($digit))
- ord ('a')) + 10;
$digit = "$digit ($digit_value)";
}
else
{
$digit_value = $digit;
}
$result = $digit_value * pow (1/$base, $pos);
$sums[] = $result;
}
}
$sums = implode (' + ', $sums);
eval ("\$base_10_value = $sums;");
return $base_10_value;
}
// 开始解题
$ns = [1,3,5,7,9,11,13,15]; // 给出的数字
$jinzhis = [10,11,12,13]; // 几进制
foreach($jinzhis as $jz)
{
foreach($ns as $n1)
{
foreach($ns as $n2)
{
foreach($ns as $n3)
{
if (show_convert_to_base_10($n1, $jz) + show_convert_to_base_10($n2, $jz)
+ show_convert_to_base_10($n3, $jz) == show_convert_to_base_10(30, $jz))
{
echo "$jz"."进制".":$n1+$n2+$n3=30".",对应10进制:"
.show_convert_to_base_10($n1, $jz)."+".show_convert_to_base_10($n2, $jz)."+"
.show_convert_to_base_10($n3, $jz)."=".show_convert_to_base_10(30, $jz)."\n";
}
}
}
}
}
?>
只试了10、11、12,13进制,结果如下:
11进制:1+15+15=30,对应10进制:1+16+16=33
11进制:3+13+15=30,对应10进制:3+14+16=33
11进制:3+15+13=30,对应10进制:3+16+14=33
11进制:5+11+15=30,对应10进制:5+12+16=33
11进制:5+13+13=30,对应10进制:5+14+14=33
11进制:5+15+11=30,对应10进制:5+16+12=33
11进制:7+11+13=30,对应10进制:7+12+14=33
11进制:7+13+11=30,对应10进制:7+14+12=33
11进制:9+11+11=30,对应10进制:9+12+12=33
11进制:11+5+15=30,对应10进制:12+5+16=33
11进制:11+7+13=30,对应10进制:12+7+14=33
11进制:11+9+11=30,对应10进制:12+9+12=33
11进制:11+11+9=30,对应10进制:12+12+9=33
11进制:11+13+7=30,对应10进制:12+14+7=33
11进制:11+15+5=30,对应10进制:12+16+5=33
11进制:13+3+15=30,对应10进制:14+3+16=33
11进制:13+5+13=30,对应10进制:14+5+14=33
11进制:13+7+11=30,对应10进制:14+7+12=33
11进制:13+11+7=30,对应10进制:14+12+7=33
11进制:13+13+5=30,对应10进制:14+14+5=33
11进制:13+15+3=30,对应10进制:14+16+3=33
11进制:15+1+15=30,对应10进制:16+1+16=33
11进制:15+3+13=30,对应10进制:16+3+14=33
11进制:15+5+11=30,对应10进制:16+5+12=33
11进制:15+11+5=30,对应10进制:16+12+5=33
11进制:15+13+3=30,对应10进制:16+14+3=33
11进制:15+15+1=30,对应10进制:16+16+1=33
13进制:3+15+15=30,对应10进制:3+18+18=39
13进制:5+13+15=30,对应10进制:5+16+18=39
13进制:5+15+13=30,对应10进制:5+18+16=39
13进制:7+11+15=30,对应10进制:7+14+18=39
13进制:7+13+13=30,对应10进制:7+16+16=39
13进制:7+15+11=30,对应10进制:7+18+14=39
13进制:9+11+13=30,对应10进制:9+14+16=39
13进制:9+13+11=30,对应10进制:9+16+14=39
13进制:11+7+15=30,对应10进制:14+7+18=39
13进制:11+9+13=30,对应10进制:14+9+16=39
13进制:11+13+9=30,对应10进制:14+16+9=39
13进制:11+15+7=30,对应10进制:14+18+7=39
13进制:13+5+15=30,对应10进制:16+5+18=39
13进制:13+7+13=30,对应10进制:16+7+16=39
13进制:13+9+11=30,对应10进制:16+9+14=39
13进制:13+11+9=30,对应10进制:16+14+9=39
13进制:13+13+7=30,对应10进制:16+16+7=39
13进制:13+15+5=30,对应10进制:16+18+5=39
13进制:15+3+15=30,对应10进制:18+3+18=39
13进制:15+5+13=30,对应10进制:18+5+16=39
13进制:15+7+11=30,对应10进制:18+7+14=39
13进制:15+11+7=30,对应10进制:18+14+7=39
13进制:15+13+5=30,对应10进制:18+16+5=39
13进制:15+15+3=30,对应10进制:18+18+3=39
到程序员这里是不是很无聊!