字节跳动2018校招后端方向(第四批)Python

阅读: 评论:0

字节跳动2018校招后端方向(第四批)Python

字节跳动2018校招后端方向(第四批)Python

三只球队Python

有三只球队,每只球队编号分别为球队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”

输入例子1:
2
3 3 0 0
3 3 3 3

输出例子1:
yes
no

例子说明1:
case1: 球队1和球队2 差0分,球队2 和球队3也差0分,所以可能的赛得分是三只球队各得1分
case2: 球队1和球队2差3分,球队2和球队3差3分,所以可能的得分是 球队1得0分,球队2得3分, 球队3 得0分,比赛已经全部结束因此最终不能打平。

"""解方程组
a+b+c=k
b-a=-d1或d1
b-c=-d2或d2
"""def judge(n, k, d1, d2):# 由于不能打平,因此n场比赛发出n分(每场发出一分给赢的队伍)if n % 3 != 0:# 如果n不能被3整除,三个队伍肯定不可能平分return Falsefor factor1 in [-1, 1]:for factor2 in [-1, 1]:# 解方程得到三支球队的得分a = (k - 2*d1*factor1 + d2*factor2) // 3;b = (k + d1*factor1 + d2*factor2) // 3;c = (k + d1*factor1 - 2*d2*factor2) // 3;# 跳过不合法的解if (a + b + c != k or a < 0 or b < 0 or c < 0) or (a > n // 3 or b > n // 3 or c > n // 3):continuereturn Truereturn Falseif __name__ == "__main__":t = int(input())for _ in range(t):n, k, d1, d2 = map(int, input().split())if judge(n, k, d1, d2):print("yes")else:print("no")

本文发布于:2024-02-05 01:05:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170720552861654.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:字节   后端   方向   Python
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23