首页 > 其他 > 详细

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

时间:2019-08-07 23:01:51      阅读:215      评论:0      收藏:0      [点我收藏+]

三支球队比分(编程题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)

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

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

我感觉这道题目的描述不是很清楚,给出的例子也不是很有代表性,只能自己猜。

如果没有想到要分四种情况讨论,而提交错误也不会给出错误的测试用例,那就不可能解得出来了。

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

原文:https://www.cnblogs.com/asenyang/p/11318323.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!