飞道的博客

某程序员去华为面试,因为错了一道题而被淘汰

699人阅读  评论(0)

题目

有一道数学的逻辑题,这种提一般智商测试或者公务员考试中经常见到,传说华为有道面试题是这样的,求出下划线的数字应该是多少?

请准备好纸和笔,思考10分钟,看看你能否得出正确答案。

1分钟后。。。

2分钟后。。。

3分钟后。。。

4分钟后。。。

5分钟后。。。

6分钟后。。。

7分钟后。。。

8分钟后。。。

9分钟后。。。

10分钟后。。。

恭喜算出答案了,智商高的同学可能3-5分钟就算出来了,下面我来公布答案。

答案

33和36。算对了吧。果然还得是你啊!!!

分析

很明显这是一道逻辑推理,因为正常情况下,2+5不可能等于12,3+6也不可能等于21。接下来我们就开始找规律。首先我们很容易找出的规律是第一个数字比第二数字小3.即

4-1=3

5-2-=3

6-3=3

所以我们可以确定这个规律成立,适用于下面的一个公式。

假设我们把第一个数设为x,第二数设为y。

得出一个简单的方程式即y-x=3。

但是仅仅只是这样还不能够有计算出,下划线里的数字是多少,所以我们还得继续找规律。经过一番观察和分析,我们就能发现第一个数字乘以第二个数字再加上第一个数字就是最后一个数字,即

1×4+1=5

2×5+5=12

3×6+3=21

所以我们可以确定这个规律也成立,适用于下面的一个公式。

得出一个简单的方程式即xy+x=1221。

最终得出两个二元一次方程式,求解x和y。

解题

代码

下面用java代码计算求解方程式,得出下,x和y。首先我们知道代码里不能像数学公式一样的写,我们得转换成代码的公式。

xy+x=1221变为x(x+3)+x=1221 再变为 x²+3x+x=1221 再转变为 x²+4x=1221

转换为 (x+2)²-4=1221 转化为(x+2)²=1225 最终转化为

转道这里差不多可以写代码求值了。


   
  1. public class Test {
  2. public static void main (String[] args) {
  3. int[] xy=getXy( 1225);
  4. System.out.println( "第一个下滑线的值为"+xy[ 0]+ "\n第二个下滑线的值为"+xy[ 1]);
  5. }
  6. private static int[] getXy( int value){
  7. int x= ( int) (Math.sqrt(value)- 2);
  8. int y= x+ 3;
  9. return new int[]{x,y};
  10. }
  11. }

控制台输出


转载:https://blog.csdn.net/weixin_40986713/article/details/128933507
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场