1周赛cf-A. Drazil and Date

本题探讨了从坐标原点出发,在有限步数内能否抵达目标点的问题。主角Drazil在方向感缺失的情况下,随机选择每一步的方向,挑战从(0,0)到(a,b)的旅行。代码实现通过判断所需步数与实际步数的关系,确定是否有可能在指定步数内到达目的地。

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

问题来源

[A. Drazil and Date]
(http://codeforces.com/problemset/problem/515/A)

问题描述

Someday, Drazil wanted to go on date with Varda. Drazil and Varda live on Cartesian plane. Drazil’s home is located in point (0, 0) and Varda’s home is located in point (a, b). In each step, he can move in a unit distance in horizontal or vertical direction. In other words, from position (x, y) he can go to positions (x + 1, y), (x - 1, y), (x, y + 1) or (x, y - 1).

Unfortunately, Drazil doesn’t have sense of direction. So he randomly chooses the direction he will go to in each step. He may accidentally return back to his house during his travel. Drazil may even not notice that he has arrived to (a, b) and continue travelling.

Luckily, Drazil arrived to the position (a, b) successfully. Drazil said to Varda: “It took me exactly s steps to travel from my house to yours”. But Varda is confused about his words, she is not sure that it is possible to get from (0, 0) to (a, b) in exactly s steps. Can you find out if it is possible for Varda?

输入

You are given three integers a, b, and s ( - 109 ≤ a, b ≤ 109, 1 ≤ s ≤ 2·109) in a single line.

输出

If you think Drazil made a mistake and it is impossible to take exactly s steps and get from his home to Varda’s home, print “No” (without quotes).

Otherwise, print “Yes”.

例子

在这里插入图片描述

AC的代码

#include <iostream>
#include<cmath>
using namespace std;
int main()
{
	int a, b,c;
	cin >> a >> b >> c;
   if((abs(a) + abs(b)) > c) 
   {
	   cout << "NO";
   }
   else {
	   if (((abs(a) + abs(b) - c) % 2 == 0))
	   {
		   cout << "YES";
	   }
	   else
	   {
		   cout << "NO";
	   }
   }
}

问题思路

输入(a,b)得到最远到的路程为|a|+|b|,如果小于最小步数则无法到达
如果等于则刚好到达,如果大于且大于最小步数为偶数则可能去到终点,如果为奇数则不可能到终点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值