从aa+bb+cc=abc说起

有这样一句话“二十岁之后为优秀的人工作,三十岁之后和优秀的人合作,四十岁之后请优秀的人工作~!”;晚上朋友告诉我学校有场求职方面的学长经验交流会,想着趁着二十岁验证下第一句话,就去听了,也是读研以来继续感受坐在下面的感觉。

首先,参加经验交流的学长学姐们很优秀,我确实看到了金子在发光。

然后,首先中提到的东西与本文没关系…

最后,开始我的话题,参加NI面试的学长在接受NI大中华区二号人物面试时,提到面试官抛出这样的问题:

aa+bb+cc=abc;

a、b、c=1~9;

求a、b、c;

解下这道题。

下面是我的求解思路,规律也是有的:

(1)aa+bb+cc=11(a+b+c)=100a+10b+c;

(2)a、b、c=1~9,则abc范围为113~1127=>a=1~2,abc=33~297中可以被11整除的数字;

(3)观察一下被11整除的数:11 22 33 44 55…;121 132 143….;220 231 242….;发现木有?百位等于十位与个位之差。

(4)下面就简单了,解个一元方程就OK!

n=1~9
c=n;
b=n+a;
则:11*(a+(n+a)+n)=100*a+10*(n+a)+n  =>  n=88a/11;

a=1时,b=9,c=8;

a=2时,无1~9范围内解,即上式答案在a、b、c=1~9时唯一。

(5)a=1;b=9;c=8。

做完了,也许学长当时忘了计算机的思维,直接使用十进制去求解。但是别忘了计算机的思维,甚至是发散下思维,进制!!!!没有告诉是十进制啊?

那么,对于p进制,解是什么样的,存不存在唯一解?

我的想法:

p进制时,这道题被化为这样:

(p+1)(a+b+c)=p^2a+p*b+c; a b c =1~9,p=2~10;a b c<=p-1;

这类问题映射为整数规划问题,编程求解。

下面Lingo程序,用pmin pmax分别表示p的范围,利用abc与def的替换,分别求解pmin、pmax,最后求取pmax-pmin的最大值,获得p范围

max =pmax-pmin;
(pmin+1)*(a+b+c)=pmin^2*a+pmin*b+c;
(pmax+1)*(d+e+f)=pmax^2*d+pmax*e+f;
!a b c d e f 为正整数;
a*b*c*d*e*f>=1;
@gin(a);
@gin(b);
@gin(c);
@gin(d);
@gin(e);
@gin(f);
!a b c d e f 为1位p进制数;
a<=pmin-1;
b<=pmin-1;
c<=pmin-1;
d<=pmax-1;
e<=pmax-1;
f<=pmax-1;
!pmin pmax为2-10进制;
@bnd(2,pmin,10);
@bnd(2,pmax,10);
pmin<=pmax;
@gin(pmin);
@gin(pmax);

得到: lingo 可知P=3~10。 那么每个p进制是否都存在a b c唯一解呢? 同样很简单的说:已知m进制时,求解方法:

min =pmin;
(pmin+1)*(a+b+c)=pmin^2*a+pmin*b+c;
!a b c  为正整数;
a*b*c>=1;
@gin(a);
@gin(b);
@gin(c);
!a b c 为1位p进制数;
a<=pmin-1;
b<=pmin-1;
c<=pmin-1;
!pmin pmax为2-10进制;
@bnd(m,pmin,10);
@gin(pmin);

其实,对于p进制,其实当且仅当a=1;b=p-1;c=p-2时,存在恒等式:

(pa+a)+(pb+b)+(pc+c)=p^2a+pb+c=2(p^2-1)

所以,上面问题广义而言是不存在唯一解的,但是规定p进制之后,存在唯一解:

a=1;b=p-1;c=p-2;

这道题,本身解决十进制并不难,只要有好的思路,条理清楚很容易想到。但是,很容易忽略进制问题。另外,即使考虑进制问题,求解也是需要一番周折。

当然从数学推导方面来看,上面a=1;b=p-1;c=p-2,这样的普适公式是可以推导出来的,但是不用编程、纸笔,在面试现场靠心算、数学归纳法证明规律,还要做唯一解验证,确实需要运气与可以鄙视人类的智商。

跳开本道题。很多时候思维的发散都是很重要的,不仅数学如此!换句话说,只有想到了未知,才理解了已知。(你理解“今天不是世界末日”这个未知命题么?)考察思维发散一直是耍人的伎俩,这点面试时都爱耍。

本道题的思路经历了 简单->复杂->简单 的历程,此题如此,事物的发展变化又岂不是如此!本文也到了简单那一步……

Over

坚持原创技术分享,您的支持将鼓励我继续创作!
0%