需要数学技巧问题的帮助

时间:2010-09-16 06:50:49

标签: algorithm math

  

可能重复:
  Easy interview question got harder: given numbers 1..100, find the missing number(s)

大家好,我不知道在哪里问这个问题但是因为这是一个算法问题。我已经面对一个数学问题而且在过去的几天里似乎无法克服它。它是这样的:

  

您将获得一台添加机器   总和一组由N + 1组成的数字   给出正整数1到N.   数字(例如机器给出   3作为第一个数字并输出3。   然后将其作为第二个数字给出6   和输出9.它给出了11作为   第三个数字和输出20. Etcetera   直到它处理了N + 1个数字)。   一个(也是唯一一个)数字是   重复。你怎么决定哪个   号码重复了吗?

这似乎是一个棘手的问题,如果只是一个问题,答案是“不可能的”,我真的很生气 - 这里有任何想法吗?

3 个答案:

答案 0 :(得分:4)

从总和中减去(1 + 2 + .. + N)= N *(N + 1)/ 2.

编辑:如果N未知,找到小于给定总和的最大三角数并减去。

答案 1 :(得分:1)

如果您知道N和总和S,则答案为d = S - N*(N+1)/2。 这是因为从1到N的所有数字的总和是triangular number,并且从1到N的每个数字出现一次(除了重复的数字之外)。

如果你不知道N,你可以N = floor((sqrt(8*S+1)-1)/2。这可以从二次方程(n^2 + n)/2 = a中推断出来。

答案 2 :(得分:1)

好的,你有:

X = 1 + 2 + ... + N + p,  where 1<=p<=N

或者

X = N(N+1)/2 + p, 1<=p<=N

宣告:

S(N) = N(N+1)/2

你知道吗

S(N) < X < S(N+1), because 1<=p<=N

通过找到S(N)使得S(N)X。

,可以找到N.

如果找到S(N),则从X中减去它,然后找到重复的数字。