题解 | #无人驾驶#
无人驾驶
https://ac.nowcoder.com/acm/problem/22239
#include<stdio.h> #include<math.h> int main() { int a,b,M,x; scanf("%d%d%d",&a,&b,&M); x=abs(a)+abs(b)-M; if(x>0) { printf("No"); } else if(x==0) { printf("Yes"); } else { if(x%2==0) { printf("Yes"); } else { printf("No"); } } return 0; }
关键点:
- 工程车从(a, b)返回到(0, 0)需要经过的总步数是|a| + |b|,即坐标差的绝对值和。
-
现在,工程车能否通过M步回到原点的条件是:
- M步的总数需要足够大,至少要等于|a| + |b|。
- M - (|a| + |b|)必须是偶数。因为每一步改变的坐标是1单位,无法“半步”返回,因此剩余的步数必须是偶数,这样才能用剩余的步数来“消耗”掉回到原点的差距。
结论:
- 如果M小于|a| + |b|,则无法返回村长家。
- 如果M - (|a| + |b|)是偶数,则可以通过M步返回村长家。
- 否则,无法返回。