【问题标题】:Need help with a math trick question [duplicate]需要数学技巧问题的帮助[重复]
【发布时间】:2011-04-13 01:34:20
【问题描述】:

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

大家好,我不知道在哪里问这个问题,但因为这是一个算法问题,所以它就可以了。在过去的几天里,我遇到了一个数学问题,似乎无法克服它。它是这样的:

给你一台加法机 将一组 N+1 位数字相加,包括 给定的正整数 1 到 N 数字(例如给定机器 3 作为第一个数字并输出 3。 然后给它 6 作为第二个数字 并输出 9。给出 11 作为 第三个数字和输出 20. 等等 直到它处理了 N+1 个数字)。 一个(也是唯一一个)数字是 重复。你如何确定哪个 号码重复?

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

【问题讨论】:

  • 你可以在这里问这个问题math.stackexchange.com
  • 你的问题没有说清楚,但我认为你得到的是总数,而不是 N。(如果你得到 N,这将是一个可笑的简单问题。)
  • stackoverflow.com/questions/3492302/… 的副本(其中还讨论了更通用的版本)
  • 你指的是数字还是数字?
  • 我不明白。有人可以澄清这个问题吗?

标签: algorithm math


【解决方案1】:

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

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

【讨论】:

  • 似乎不起作用... N 指的是数字的数量,而不是其本身的值。
  • 等一下,我不明白,假设将数字添加为 3、6、11、6 - 所以现在 N 是 4。鉴于我输入 6 并且只有值的总和?
  • @Ali:根据您的描述:“一组由 1 到 N 的正整数组成的 N+1 位数字”。但是 6 和 11 在 1..4 之外。
  • 呃,我的意思是我在求职面试中遇到了这个问题,并且已经完整地复制了它。我对 N+1 所指的内容有点困惑,这似乎超出了我的数学领域,或者我在这里忘记了我的数值方法类......
  • 这就是我阅读问题的方式:求和数字:[1,2,3,3,4], N = 4;总和 = 13, 13-4*5/2 = 13-10 = 3
【解决方案2】:

如果您知道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推导出来。

【讨论】:

  • 我尝试了以下数字 [3, 6, 10] = 19,将 6 加到这个总和中得到 25 所以 4*(4+1) = 20, 20/2 = 10 但是25 - 10 给我 15...我想知道一个数字是否重复,哪个是重复的?这是数学的哪个分支?
  • 这些不符合您的问题描述。这些数字不属于 1..3。不仅如此,4 不是 N,而是 N+1。至于分支,是初等组合学。
  • 如果你在这个问题中取任意数字,除非你事先知道所有不同数字的总和,否则它基本上是无法解决的。
  • OK 我在这里迷路了——基本上我有 SUM 和数字的数量——但需要知道重复的数字是什么
  • 但是您的问题描述表明所有这些数字都属于1..N,其中N+1 是一个数字!也就是说,从 1 到 N 的所有数字都有一个重复,也在 1 和 N 之间。看一个例子:N = 5,数字是 1,2,3,4,5,3。重复是 3。所有数字的总和是 18。N 是 5,我们这里有 N+1 = 6 个数字。所以 d = 18 - 5*6/2 = 3,正如预期的那样。
【解决方案3】:

好的,你有:

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 中减去它,你会找到重复的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2015-10-15
    • 2023-04-06
    • 2011-01-14
    相关资源
    最近更新 更多