• 校招真题练习031 三支球队比分(头条)


    三支球队比分(编程题1)

    题目描述
    有三只球队,每只球队编号分别为球队1,球队2,球队3,这三只球队一共需要进行 n 场比赛。现在已经踢完了k场比赛,每场比赛不能打平,踢赢一场比赛得一分,输了不得分不减分。已知球队1和球队2的比分相差d1分,球队2和球队3的比分相差d2分,每场比赛可以任意选择两只队伍进行。求如果打完最后的 (n-k) 场比赛,有没有可能三只球队的分数打平。



    输入描述:
    第一行包含一个数字 t (1 <= t <= 10)
    接下来的t行每行包括四个数字 n, k, d1, d2(1 <= n <= 10^12; 0 <= k <= n, 0 <= d1, d2 <= k)

    输出描述:
    每行的比分数据,最终三只球队若能够打平,则输出“yes”,否则输出“no”

    N = int(input())
    for i in range(N):
        ary = list(map(int,input().split()))
        n,k,d1,d2 = ary[0],ary[1],ary[2],ary[3]
        diff = n - k
        r1 = diff - (d1 + d2) - d2
        r1x = k - d1 - (d1 + d2)
        r2 = diff - d1 - d2
        r2x = k - (d1 - d2) - d1 if d1 >= d2 else k - (d2 - d1) - d2
        r3 = diff - d1 - (d1 - d2) if d1 >= d2 else diff - d2 - (d2 - d1)
        r3x = k - (d1 + d2)
        r4 = diff - d1 - (d1 + d2)
        r4x = k - (d1 + d2) - d2
        #1. 球队1 <= 球队2 <= 球队3
        if r1 >= 0 and r1 % 3 == 0 and r1x >= 0 and r1x % 3 == 0:
            print('yes')
        #2. 球队1 <= 球队2 >= 球队3
        elif r2 >= 0 and r2 % 3 == 0 and r2x >= 0 and r2x % 3 == 0:
            print('yes')
        #3. 球队1 >= 球队2 <= 球队3
        elif r3 >= 0 and r3 % 3 == 0 and r3x >= 0 and r3x % 3 == 0 :
            print('yes')
        #4. 球队1 >= 球队2 >= 球队3
        elif r4 >= 0 and r4 % 3 == 0 and r4x >= 0 and r4x % 3 == 0:
            print('yes')
        else:
            print('no')

    这题逻辑性很强,稍有不慎就可能出错。

    要判断已经完成的比赛数的特征和剩余比赛数的特征,并分四种情况分别计算。

    我感觉这道题目的描述不是很清楚,对于标红的那句描述:“已知球队1和球队2的比分相差d1分”而下面又给出条件“0 <= d1”,

    我读到这句话后认为是:“球队2比球队1多d1分”。但是题目的实际意思却是:可能球队1比球队2多d1分,也可能球队2比球队1多d1分,需要分情况讨论。

    至少这两种情况是不确定的,这就给答题者造成了不必要的干扰。所以这道题目,只能给个差评。

  • 相关阅读:
    网卡驱动-BD详解(缓存描述符 Buffer Description)
    break&&continue
    C++解析六-继承
    C++解析五-this 指针,指向类的指针
    1-find
    C++解析四-友员函数、内联函数、静态成员
    树形结构节点求和,以及set排序
    java.util.ConcurrentModificationException 解决和for循环时对集合remove操作
    eclipse保存卡死和内存溢出
    关于Eclipse安装了反编译插件,无法查看源码问题
  • 原文地址:https://www.cnblogs.com/asenyang/p/11318323.html
Copyright © 2020-2023  润新知