V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zungmou
V2EX  ›  程序员

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

  •  
  •   zungmou · 2016-05-29 17:09:34 +08:00 · 4648 次点击
    这是一个创建于 3085 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如两个序列

    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 条回复    2016-05-30 21:41:39 +08:00
    YuJianrong
        1
    YuJianrong  
       2016-05-29 17:16:30 +08:00 via iPhone   ❤️ 1
    “你的朋友”不会这道初中 level 的数学题也就罢了,你也不会这道初中 level 的数学题也就罢了,但作为面试题贴上了求解答始终是不大好吧……
    limhiaoing
        2
    limhiaoing  
       2016-05-29 17:17:30 +08:00
    这道数学题,不写代码也能解出来。
    zungmou
        3
    zungmou  
    OP
       2016-05-29 17:21:00 +08:00
    @YuJianrong 哈哈哈哈,诚然,我只想到用循环去解,不知阁下的解法是?
    purensong
        4
    purensong  
       2016-05-29 17:21:36 +08:00
    其余项随机取值,是自然数内随机吗,请问这个随机数要给出来吗
    zungmou
        5
    zungmou  
    OP
       2016-05-29 17:22:26 +08:00
    @purensong 程序里面可以自由取,代码都看到的。
    zungmou
        6
    zungmou  
    OP
       2016-05-29 17:23:03 +08:00
    @limhiaoing 说说嘛,我真的只想到用循环。
    limhiaoing
        7
    limhiaoing  
       2016-05-29 17:31:25 +08:00   ❤️ 1
    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
        8
    kx5d62Jn1J9MjoXP  
       2016-05-29 17:33:09 +08:00
    不知所云
    purensong
        9
    purensong  
       2016-05-29 17:33:59 +08:00
    @zungmou 那是自然数范围吗,这个还能写循环? 这个是不是有个条件,要求前面数字的变化次数最少或者在附近变化
    rale
        10
    rale  
       2016-05-29 17:48:18 +08:00
    规则 1 和规则 3 叙述有矛盾
    1 、穷举,从 0 ~ n 改变 s[-1], 找到相等点。
    2 、列方程,这是一个线性方程,直接一次便可算出相等点。
    找到相等点了,小于大于自然好说了。
    xujif
        11
    xujif  
       2016-05-29 18:16:47 +08:00
    v1 = s1[0:-1] = Sn * (n-1) + x / n
    soratadori
        12
    soratadori  
       2016-05-29 18:17:29 +08:00
    是我没读明白题目吗,这跟小学(或初中不等式)问题有啥区别。顶多处理下不等式变号问题
    kindjeff
        13
    kindjeff  
       2016-05-29 18:49:17 +08:00 via iPhone
    看了好几遍才看懂。把规则的第三项去掉反倒能懂了,这个应该是指题目给数列是随机的吧。
    wodesuck
        14
    wodesuck  
       2016-05-29 18:59:38 +08:00
    @kindjeff 如果是这题意的话 LZ 的智商也太拙计了吧。。
    iyangyuan
        15
    iyangyuan  
       2016-05-29 19:23:45 +08:00 via iPhone
    这。。。
    a154312237
        16
    a154312237  
       2016-05-30 02:54:58 +08:00 via iPhone   ❤️ 1
    这是数学题吧 而且明明很简单的问题 被你描述的好复杂
    不就是只可以同时改变两个序列的最后一个值且改变后两个值要相同 问什么情况下 两个序列平均值关系为 小于 /等于 /大于
    我不太明白规则里 1 和 3 是什么情况 冲突了吧
    msg7086
        17
    msg7086  
       2016-05-30 08:32:06 +08:00   ❤️ 1
    第一组有 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
        18
    yuankui  
       2016-05-30 09:55:17 +08:00   ❤️ 1
    小雪数学题吧?
    chenyg32
        19
    chenyg32  
       2016-05-30 10:14:50 +08:00   ❤️ 1
    @limhiaoing 应该是一元一次? x 和 y 是相同的。

    @zungmou 题意可不可以理解为这样:
    输入 2 个数组 A 和 B , A 、 B 的元素个数均为任意但不为空,其中输入保证 A 和 B 的最后一项数值 L 相等,求对于给定输入下, L 的大小对 A 、 B 平均数大小的影响。
    wizardoz
        20
    wizardoz  
       2016-05-30 12:59:33 +08:00   ❤️ 1
    平均数是固定的,数量是固定的,那么总数已经确定了,每一个数是什么还重要吗?
    所以这题不需要循环!
    limhiaoing
        21
    limhiaoing  
       2016-05-30 21:41:39 +08:00
    @chenyg32 你是对的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:24 · PVG 06:24 · LAX 14:24 · JFK 17:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.