codeforces #416 div2 811A-Vladik and Courtesy

本文介绍了一种通过算法判断糖果交换游戏中谁会首先无法继续游戏的方法。游戏中两名玩家轮流互相给予糖果,每次给予的数量比上一次多一个。文章提供了一个C++实现方案,通过计算每个玩家能够继续游戏的最大糖果数量来确定胜者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

At regular competition Vladik and Valera won a and b candies respectively. Vladik offered 1 his candy to Valera. After that Valera gave Vladik 2 his candies, so that no one thought that he was less generous. Vladik for same reason gave 3 candies to Valera in next turn.

More formally, the guys take turns giving each other one candy more than they received in the previous turn.

This continued until the moment when one of them couldn’t give the right amount of candy. Candies, which guys got from each other, they don’t consider as their own. You need to know, who is the first who can’t give the right amount of candy.

Input

Single line of input data contains two space-separated integers ab (1 ≤ a, b ≤ 109) — number of Vladik and Valera candies respectively.

Output

Pring a single line "Vladik’’ in case, if Vladik first who can’t give right amount of candy, or "Valera’’ otherwise.

Examples
input
1 1
output
Valera
input
7 6
output
Vladik
Note

Illustration for first test case:

Illustration for second test case:

一道水题,但可能想复杂了。
#include<cstdio>
#include<algorithm>
#define ll long long 
using namespace std;
int main() {
	int a, b;
	scanf("%d %d", &a, &b);
	ll s1,s2,t1,t2;
	int h, k;
	int flag1 = 0;
	int flag2 = 0;
	for (int i = 0;i < 1e5;i++) {
		s1 = i*i;
		s2 = i*(i + 1);
		if (s1 >= a && !flag1) {
			flag1 = 1;
			h = i;
			t1 = s1;
		}
		if (s2 >= b && !flag2) {
			flag2 = 1;
			k = i;
			t2 = s2;
		}
		if (flag1&&flag2) break;
	}
	if (t1 == a&&t2 == b) {
		if (h > k) printf("Valera\n");
		else printf("Vladik\n");
	}
	if (t1 > a&&t2 > b) {
		if (h > k) printf("Valera\n");
		else printf("Vladik\n");
	}
	if (t1 == a&&t2 > b) {
		if (k >= h + 1) printf("Vladik\n");
		else printf("Valera\n");
	}
	if (t1 > a&&t2 == b) {
		if (h - 1 <= k) printf("Vladik\n");
		else printf("Valera\n");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值