天天看点

送糖果(秋季每日一题 24)

Vladik 有 个糖果,Valera 有

两个人回合制的互送礼物给对方。

第一轮,Vladik 送给 Valera

第二轮,Valera 送给 Vladik

第三轮,Vladik 送给 Valera

以此类推,两人轮流给对方送糖果,且每轮送出的糖果数量都比上一轮多一个。

当某一轮,轮到某人送糖果时,如果糖果数量不够了,则停止互送礼物。

请问,是谁的糖果率先不够?

注意,每个人都只能送给对方自己事先准备的糖果。

自己收到的糖果不得再送还给对方。

输入格式

第一行包含整数 ,表示共有

每组数据占一行,包含两个整数 。

输出格式

每组数据输出一行结果,如果 的糖果率先不够,则输出 ​​

​Vladik​

​​,否则输出 ​

​Valera​

​。

数据范围

2
1 1
7 6      
Valera
Vladik      
#include<iostream>
#include<cmath>

using namespace std;

int main(){
    
    int t;
    cin >> t;
    
    int n, m, a, b;
    while(t--){
        
        cin >> n >> m;
        
        a = sqrt(n);
        double x = sqrt(1 + 4 * (long long)m);
        
        
        b = (-1 + x) / 2;
        
        if(a <= b) puts("Vladik");
        else puts("Valera");
        
    }
    
    
    return 0;
}      
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int T;
    cin >> T;
    while (T -- )
    {
        int a, b;
        cin >> a >> b;
        int k = 1;
        while (true)
        {
            if (a < k)
            {
                puts("Vladik");
                break;
            }
            a -= k ++ ;
            if (b < k)
            {
                puts("Valera");
                break;
            }
            b -= k ++ ;
        }
    }
    return 0;
}