Challenge: Possible Path

Subdomeniu: Fundamentals (fundamentals)

Scor cont: 20.0 / 20

Submission status: Accepted

Submission score: 1.0

Submission ID: 464721596

Limbaj: python3

Link challenge: https://www.hackerrank.com/challenges/possible-path/problem

Cerinta

Adam is standing at point $(a, b)$ in an infinite 2D grid. He wants to know if he can reach point $(x, y)$ or not. The only operation he can do is to move to point $(a + b, b), (a, a + b), (a - b, b), \text{or} (a, b - a)$ from some point $(a, b)$. It is given that he can move to any point on this 2D grid, i.e., the points having positive or negative $X$(or $Y$) co-ordinates.  

Tell Adam whether he can reach $(x, y)$ or not.

Input Format

The first line contains an integer, $T$, followed by $T$ lines, each containing $4$ space-separated integers i.e. $a$, $b$, $x$ and $y$.

Output Format

For each test case, display `YES` or `NO` that indicates if Adam can reach $(x,y)$ or not.

Constraints

- $1 \le T \le 1000$  
- $1 \le a,b,x,y \le 10^{18}$

Cod sursa

#!/bin/python3

import math
import os
import random
import re
import sys

def solve(a, b, x, y):
    if math.gcd(a,b)==math.gcd(x,y):
        return 'YES'
    else:
        return 'NO'
if __name__ == '__main__':
    fptr = open(os.environ['OUTPUT_PATH'], 'w')

    t = int(input().strip())

    for t_itr in range(t):
        first_multiple_input = input().rstrip().split()

        a = int(first_multiple_input[0])

        b = int(first_multiple_input[1])

        x = int(first_multiple_input[2])

        y = int(first_multiple_input[3])

        result = solve(a, b, x, y)

        fptr.write(result + '\n')

    fptr.close()
HackerRank Fundamentals – Possible Path