我接受了电话面试。其中一个问题是
有一个数,它的3次数字之和等于该数本身,并且只有一个这样的数。这个号码是哪个?
我不知道如何解决这个问题。并要求提示。他们不给,我不知道这个数字可能是多少。
现在像我这样信息量有限的人应该如何用给定的信息来解决这个问题(假设他们没有告诉我这个数字有多少位)?
如果数字是 10x + y 那么 10x + y = 3(x+ y) --> x/y = 2/7 所以最明显的解决方案是 x = 2 , y = 7...因此 27 是一个答案
好吧,我想像这样的电话面试中的现场问题将非常具有挑战性。但是,这也将帮助您解决问题。想想是三的倍数的小数字。12, 1+2=3 3X3=9 不对,然后继续直到:27, 2+7=9, 9*3 = 27 宾果!很多时候,我们都在寻找您的思考过程,以便能够找到正确的答案。
这个数字不能超过两位,因为如果它有 n> 2 位,那么它的最大和是 n*9 并且 n*9*3 < 10^(n-1)。所以你应该只在两位数中搜索(1位根本不可能)。它也应该能被 3 整除,现在您的搜索限制为少于 30 个数字。它也应该能被 9 整除(为什么?),所以你可以简单地说是 27(不是 18,27 是正确答案,知道只有一个数字,这就是解决方案)。
一个 python 蛮力解决方案,它可能不是最好的,但它是一些东西。
def sum_digits(n):
s = 0
while n:
s += n % 10
n /= 10
return s
for i in range(1, 1000):
if i == sum_digits(i) * 3:
print i