腾讯2018 算法岗在线编程题二
小Q和牛牛玩了一个游戏,这个游戏进行了若干轮,每一轮都有一个获胜者,获胜者将获得轮次的分数。
例如:第一轮小Q获胜,小Q将获得1分,第二轮牛牛获胜,牛牛将获得2分。游戏结束后,小Q总获得了X分,牛牛获得了Y分。
现在希望你能来计算一下小Q在所有轮次中获胜次数最少可以是多少。
更一般的,假设总共进行了N轮游戏,小Q最少需要在N轮中获得多少次,使得小Q恰好获得X分,牛牛获得Y分。
输入描述:
输入包括两个整数,x和y,表示小Q获得的分数和牛牛获得的分数。
输出描述:
输出一个正整数,表示最少进行的轮数,如果没有解,输出-1。
示例:
输入
7 14
输出
2
def getNumber(num): sumv = 0 count = 0 while(sumv<num): count += 1 sumv += count return count import math while True: try: num = map(int,raw_input().split()) total = getNumber(num[0]+num[1]) print(total) res = 0 if(total*(total+1)/2!=(num[0]+num[1])): res = -1 a1 = 0 for i in range(total,0,-1): if(a1 + i <= num[0]): a1 += i res += 1 print(res) except: break
浙公网安备 33010602011771号