• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zungmou
V2EX  ›  程序员

朋友发来一道面试题,有点难度,反推平均数,请高手帮忙看看!

  •  
  •   zungmou · May 29, 2016 · 5675 views
    This topic created in 3815 days ago, the information mentioned may be changed or developed.
    比如两个序列

    S1 = [ 6, 6, 7, 6, 8 ]
    S2 = [ 8, 7, 6, 9, 6, 9, 9, 6, 9, 8 ]

    S1 序列的平均数值 = 6.6
    S2 序列的平均数值 = 7.7

    规则:
    1 、只能改变序列中最后一项的值;
    2 、改变任意一个序列的最后一项时,同时更新到另外一个序列的最后一项(比如将 S1 序列最后一项改为 12 ,那么 S2 序列的最后一项也必须改为 12 )。
    3 、除两个序列的最后一项必须保持同步外,其余项可随机取值。

    要求:
    1 、写出任意语言的代码;
    2 、当序列的最后一项数值发生改变后,其数值为多少时, S1 序列的平均值小于 S2 , S1 序列的平均值等于 S2 , S1 序列的平均值大于 S2 。
    3 、以解法多余 2 个或以上者优先。
    21 replies  •  2016-05-30 21:41:39 +08:00
    YuJianrong
    YuJianrong
    May 29, 2016 via iPhone❤️1
    1
    “你的朋友”不会这道初中 level 的数学题也就罢了,你也不会这道初中 level 的数学题也就罢了,但作为面试题贴上了求解答始终是不大好吧……
    limhiaoing
    limhiaoing
    May 29, 2016
    2
    这道数学题,不写代码也能解出来。
    zungmou
    zungmou
    OP
    May 29, 2016
    3
    @YuJianrong 哈哈哈哈,诚然,我只想到用循环去解,不知阁下的解法是?
    purensong
    purensong
    May 29, 2016
    4
    其余项随机取值,是自然数内随机吗,请问这个随机数要给出来吗
    zungmou
    zungmou
    OP
    May 29, 2016
    5
    @purensong 程序里面可以自由取,代码都看到的。
    zungmou
    zungmou
    OP
    May 29, 2016
    6
    @limhiaoing 说说嘛,我真的只想到用循环。
    limhiaoing
    limhiaoing
    May 29, 2016❤️1
    7
    S1 = [6, 6, 7, 6, x]
    S2 = [8, 7, 6, 9, 6, 9, 9, 6, 9, y]

    V1 = S1 / 5 = (19 + x) / 5 = 3.8 + x / 5
    V2 = S2 / 10 = (69 + y) / 10 = 6.9 + y / 10
    之后就是根据 V1 == V2 , V1 < V2 和 V1 > V2 来解二元一次方程和二元一次不等式了。
    kx5d62Jn1J9MjoXP
    kx5d62Jn1J9MjoXP
    May 29, 2016
    8
    不知所云
    purensong
    purensong
    May 29, 2016
    9
    @zungmou 那是自然数范围吗,这个还能写循环? 这个是不是有个条件,要求前面数字的变化次数最少或者在附近变化
    rale
    rale
    May 29, 2016
    10
    规则 1 和规则 3 叙述有矛盾
    1 、穷举,从 0 ~ n 改变 s[-1], 找到相等点。
    2 、列方程,这是一个线性方程,直接一次便可算出相等点。
    找到相等点了,小于大于自然好说了。
    xujif
    xujif
    May 29, 2016
    11
    v1 = s1[0:-1] = Sn * (n-1) + x / n
    soratadori
    soratadori
    May 29, 2016
    12
    是我没读明白题目吗,这跟小学(或初中不等式)问题有啥区别。顶多处理下不等式变号问题
    kindjeff
    kindjeff
    May 29, 2016 via iPhone
    13
    看了好几遍才看懂。把规则的第三项去掉反倒能懂了,这个应该是指题目给数列是随机的吧。
    wodesuck
    wodesuck
    May 29, 2016
    14
    @kindjeff 如果是这题意的话 LZ 的智商也太拙计了吧。。
    iyangyuan
    iyangyuan
    May 29, 2016 via iPhone
    15
    这。。。
    a154312237
    a154312237
    May 30, 2016 via iPhone❤️1
    16
    这是数学题吧 而且明明很简单的问题 被你描述的好复杂
    不就是只可以同时改变两个序列的最后一个值且改变后两个值要相同 问什么情况下 两个序列平均值关系为 小于 /等于 /大于
    我不太明白规则里 1 和 3 是什么情况 冲突了吧
    msg7086
    msg7086
    May 30, 2016❤️1
    17
    第一组有 5 个数,所以每个数字每次改变 1 ,会改变平均数 0.2 。
    第二组有 10 个数,所以每次改变平均数 0.1 。
    现在要让 S1 与 S2 相等,那么假设最后一个值是 8 + delta ,那么就有等式 6.6 + 0.2 delta = 7.7 + 0.1 delta ,求出结果即可。
    不相等的话改成不等式再求值即可。
    真的是中学数学的内容哦。
    要是写成程序的话那就是 last(A) + (avg(B) - avg(A)) / (1 / count(A) - 1 / count(B)) 了。
    yuankui
    yuankui
    May 30, 2016❤️1
    18
    小雪数学题吧?
    chenyg32
    chenyg32
    May 30, 2016❤️1
    19
    @limhiaoing 应该是一元一次? x 和 y 是相同的。

    @zungmou 题意可不可以理解为这样:
    输入 2 个数组 A 和 B , A 、 B 的元素个数均为任意但不为空,其中输入保证 A 和 B 的最后一项数值 L 相等,求对于给定输入下, L 的大小对 A 、 B 平均数大小的影响。
    wizardoz
    wizardoz
    May 30, 2016❤️1
    20
    平均数是固定的,数量是固定的,那么总数已经确定了,每一个数是什么还重要吗?
    所以这题不需要循环!
    limhiaoing
    limhiaoing
    May 30, 2016
    21
    @chenyg32 你是对的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1477 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    ♥ Do have faith in what you're doing.