当一只程序员遇到了一道无聊的智力填数题!

本猿在朋友圈和群里多次看到这样一道智力题(见下图),一看就是一道需要乱扯的无聊的题目。好吧,试试就试试。

只能填数字啊,那就不能从“单位”的角度去乱搞了,那就用进制吧。给出的数字中出现了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

到程序员这里是不是很无聊!

原文发布于微信公众号 - nginx(nginx-study)

原文发表时间:2016-01-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏mathor

1小时掌握c++面向对象编程

使用对象指针实参仅将对象的地址值传递给形参,而不进行副本的拷贝,这样可以提高运行效率,减少时间开销

751
来自专栏微信公众号:Java团长

浅谈Java中的equals和==

  为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初学Java的时候这个问题不弄清楚,就会导致自己在以后编写代码时出现一些...

891
来自专栏猿人谷

const用法小结

常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。 概述 1. const有什么...

1877
来自专栏前端杂货铺

new的探究

new操作符易用,但是往往容易忽略对其的理解。 var foo= new Foo(); 这个简单的语句,涉及到了一系列的步骤:   1),给对象开辟内存,即 v...

34611
来自专栏梧雨北辰的开发录

Swift学习:构造器(中)

本篇继续对Swift中的构造器进行介绍,这里主要说到类的继承和构造。 作为引用类型的类具有的继承特性,这使得类的构造过程较为复杂一些,因为涉及到很多细节性的问题...

3078
来自专栏黑泽君的专栏

Java中方法重写的两个面试题

  方法重写:     在子类中,出现和父类中一模一样的方法声明的现象。(包含方法名、参数列表和返回值类型都一样)   方法重载:     同一...

2951
来自专栏机器学习算法与Python学习

python: sort, sorted, reverse

python语言中的列表排序方法有三个:reverse反转/倒序排序、sort正序排序、sorted可以获取排序后的列表。在更高级列表排序中,后两中方法还可以加...

3718
来自专栏一“技”之长

深入理解JavaScript函数 原

    从功能上理解,函数是一组可以随时运行的语句,是一段代码块,也是所谓的子程序。在JavaScript中,函数实质上也是一种对象,是Function对象。函...

621
来自专栏梧雨北辰的开发录

Python学习(4):变量与数据类型

1737
来自专栏小樱的经验随笔

【Java学习笔记之二十九】Java中的"equals"和"=="的用法及区别

Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hel...

2927

扫码关注云+社区

领取腾讯云代金券