约会 福建工程学院第七届ACM程序设计新生赛 (同步赛)

版权声明:版权声明,使用请说明出处 https://blog.csdn.net/qq_41835683/article/details/85197138

链接:https://ac.nowcoder.com/acm/contest/289/H
来源:牛客网
 

题解:看代码注释

代码

#include <iostream>
#include <cmath>
using namespace std;
#define int long long
/*挺有意思的一道题*/
signed  main(){
    int x,y,n;
    while(cin>>x>>y>>n){
        x=abs(x);/*全部放到第一象限*/
        y=abs(y);/*全部放到第一象限*/
        int ans=x+y;/*x+y一定是偶数 因为斜着走的时候x和y同时加1或减1*/
        if(ans&1){
            cout<<"Not the fate"<<endl;
        }
        else if((x==0&&y==0&&n)||max(x,y)>n||(max(x,y)-n)%2){
            cout<<"You are lying"<<endl;/*最短路是max(x,y)*/
        }/*有三种情况是撒谎*/
        /*首先除了一定走不到,就是能走到*/
        /*两种情况是因为步数不对:其中的一种是步数多了,但是不能通过迂回,简单来说就是不能来回走,另一种就是根本步数就不够*/
        /*最后一种是最大的坑点:题中说,走到哪里这个人都要问,而且每个点都有小学妹,要加特判*/
        /*0 0 非0*/
        else
            cout<<"We are together"<<endl;
    }
    return 0;
}

题目描述

Hang等了一年,终于,朝气蓬勃的小学妹来了,在开学当天,就成功打入协会迎新群,在Hang的魅力(死皮赖脸)之下,有个小学妹要和他面基了,小学妹说,她就在这个学校里,让Hang过去找她

假设,在二维坐标的每个点,都有一个女生,但是Hang不知道哪个是和他约会小学妹

所以他在每一个位置,都会询问这个女生(因为Hang记忆力比较差,所以走过的地方可以重复走,是不是Hang认识的小学妹

如果是Hang认识的小学妹,则他不会继续找下去,否则他会随机找一个方向找下去

如果Hang和小学妹见面了,小学妹会问Hang他走了几步到的,如果Hang说的步数一定是假的,小学妹就和moxin大佬私奔

现已知Hang的坐标(0,0),小学妹坐标(x,y),Hang回答的步数a,你能否帮小学妹判断Hang说的是否可能是真话呢?

因为Hang曾经横行霸道,被人一顿暴打,所以他现在怂的只敢斜着走(↖ ↙ ↗ ↘)斜着走,如:(0,0) -> (1,1) , (1,1) ->(0,2),(0,0)->(-1,1)

输入描述:

多组数据,每组数据先有两个整数(x,y)(数据保证x,y都在int范围内)表示学妹的坐标,接下来再一个非负整数a(0<=a<=1015),表示Hang说他走了a步找到了小学妹

输出描述:

 

如果Hang不可能找到小学妹,请输出“Not the fate”;(若Hang不可能找到小学妹,则a是无意义的)

如果Hang能找到小学妹但是通过他说的步数a不能走到小学妹所在位置,请输出“You are lying”;
如果Hang能找到小学妹并且通过他说的步数a能走到小学妹所在位置,请输出“We are together”。
"能找到小学妹"指存在一个k∈N,使得Hang走k步能到达小学妹所在位置。 

若Hang能找到小学妹,则对于能到达小学妹位置的所有可能步数k组成的集合(可以知道这个集合可能有无穷多个数k),只要a属于这个集合,则判断a能走到小学妹所在位置,反之a不能走到。

示例1

输入

复制

1 0 2
2 2 1
2 2 2

输出

复制

Not the fate
You are lying
We are together

猜你喜欢

转载自blog.csdn.net/qq_41835683/article/details/85197138