王老头

导航

腾讯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

 

posted on 2018-09-16 16:43  王老头  阅读(241)  评论(0)    收藏  举报