3799 送糖果

1. 问题描述:

Vladik 有 a 个糖果,Valera 有 b 个糖果。两个人回合制的互送礼物给对方。第一轮,Vladik 送给 Valera 1 个糖果。第二轮,Valera 送给 Vladik 2 个糖果。第三轮,Vladik 送给 Valera 3 个糖果。以此类推,两人轮流给对方送糖果,且每轮送出的糖果数量都比上一轮多一个。当某一轮,轮到某人送糖果时,如果糖果数量不够了,则停止互送礼物。请问,是谁的糖果率先不够?注意,每个人都只能送给对方自己事先准备的糖果。自己收到的糖果不得再送还给对方。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含两个整数 a,b。

输出格式

每组数据输出一行结果,如果 Vladik 的糖果率先不够,则输出 Vladik,否则输出 Valera。

数据范围

1 ≤ T ≤ 10,
1 ≤ a,b ≤ 10 ^ 9

输入样例:

2
1 1
7 6

输出样例:

Valera
Vladik
来源:https://www.acwing.com/problem/content/3802/

2. 思路分析:

分析题目可以知道我们可以计算出当前各自有a,b个糖果的情况下最多有多少个回合,判断出哪一个更多说明另一方就会在更少回合的时候就没有糖果了:

3. 代码如下:

import math


class Solution:
    def process(self):
        T = int(input())
        for i in range(T):
            a, b = map(int, input().split())
            # 计算a, b各自最多有多少个回合
            r1, r2 = int(math.sqrt(a)), int((math.sqrt((1 + 4 * b)) - 1) / 2)
            if r1 <= r2: print("Vladik")
            else: print("Valera")


if __name__ == '__main__':
    Solution().process()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值