zoukankan      html  css  js  c++  java
  • 1340: 移动坐标

    1340: 移动坐标

    时间限制: 1 秒  内存限制: 128 MB  |  提交: 85  解决: 30

    题目描述

    给你两个点A、B,和固定移动距离(x,y),问是否可以通过移动A点若干次最终到B点。

    有四种移动方法:
    (a,b)->(a+x,b+y);
    (a,b)->(a+x,b-y);
    (a,b)->(a-x,b+y);
    (a,b)->(a-x,b-y);

    如果可以输出“YES”,否则输出“NO”。

    输入

    第一行:T,测试实例个数:

    第二行:四个整数。x1,y1,x2,y2。分别是A点的坐标和B点的坐标。 - 10^5 ≤ x1, y1, x2, y2 ≤ 10^5

    第三行:两个整数。x,y是固定移动距离    (1 ≤ x, y ≤ 105

    输出

    “YES”或者“NO”。

    样例输入

    2
    0 0 0 6
    2 3
    1 1 3 6 
    1 5
    

    样例输出

    YES
    NO
    思路:分别计算 x 方向和 y 方向 最少 需要多少次 移动可以到达 目标位置的 对应坐标。
       以最后到达的 方向为标准 另一方提前到达的方向只要可以通过左右移动 清除(最大减去最小 为 2 的倍数)已到达方向上多余的移动 就可以到达目标位置
    最后还需要注意,又可能 x 方向或者 y 方向上的 距离差 不是 x 与 y 的倍数 (对应方向永远不可能到达)
    #include <cstdio>
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    
    using namespace std ; 
    
    int main(){
        
        int T ; 
        int x1 , y1 , x2 , y2 ; 
        int x , y ; 
        scanf("%d" , &T) ; 
        while(T--){
            scanf("%d%d%d%d" , &x1 , &y1 , &x2 , &y2) ; 
            scanf("%d%d" , &x , &y) ; 
            
            int dx = abs(x1 - x2) ; 
            int dy = abs(y1 - y2) ; 
            
            if((dx%x!=0)||(dy%y!=0)){
                printf("NO
    ") ; 
                continue ; 
            }
            
            if(dx/x > dy/y){
                int num = dx/x ; 
                num = num - dy/y ; 
                if(num%2 == 0 ){
                    printf("YES
    ") ; 
                    continue ; 
                } else {
                    printf("NO
    ") ; 
                }
            } else if(dx/x < dy/y){
                int num = dy/y ; 
                num = num - dx/x ; 
                if(num%2==0){
                    printf("YES
    ") ; 
                    continue ; 
                } else {
                    printf("NO
    ") ; 
                    continue ; 
                }
            } else if(dx/x == dy/y){
                printf("YES
    ") ; 
                continue ; 
            }
        }
        
        return 0 ; 
    } 
     
  • 相关阅读:
    【Python入门自学笔记专辑】——面向对象编程-实例方法11.3.6
    最简单的轮播广告(原生JS)
    (转)JavaScript一:为什么学习JavaScript?
    JAVASCRIPT中经典面试题
    使用AngularJS实现简单:全选和取消全选功能
    canvas绘制经典折线图(一)
    前端总结
    PHP如何连接MySQL数据库
    PHP预定义变量
    PHP语法
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7869008.html
Copyright © 2011-2022 走看看