## Algorithm

Problem Name: 780. Reaching Points

Given four integers `sx`, `sy`, `tx`, and `ty`, return `true` if it is possible to convert the point `(sx, sy)` to the point `(tx, ty)` through some operations, or `false` otherwise.

The allowed operation on some point `(x, y)` is to convert it to either `(x, x + y)` or `(x + y, y)`.

Example 1:

```Input: sx = 1, sy = 1, tx = 3, ty = 5
Output: true
Explanation:
One series of moves that transforms the starting point to the target is:
(1, 1) -> (1, 2)
(1, 2) -> (3, 2)
(3, 2) -> (3, 5)
```

Example 2:

```Input: sx = 1, sy = 1, tx = 2, ty = 2
Output: false
```

Example 3:

```Input: sx = 1, sy = 1, tx = 1, ty = 1
Output: true
```

Constraints:

• `1 <= sx, sy, tx, ty <= 109`

## Code Examples

### #1 Code Example with C Programming

```Code - C Programming```

``````
bool reachingPoints(int sx, int sy, int tx, int ty){
#if 0
if (sx == tx && sy == ty) return true;
if (sx > tx || sy > ty) return false;
return (reachingPoints(sx, sx + sy, tx, ty) ||
reachingPoints(sx + sy, sy, tx, ty));
#else
while (tx >= sx && ty >= sy) {
if (tx == sx && ty == sy) return true;
if (tx > ty) {
tx -= ty;
} else {
ty -= tx;
}
}
return false;
#endif
}
``````
Copy The Code &

Input

cmd
sx = 1, sy = 1, tx = 3, ty = 5

Output

cmd
true

### #2 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const reachingPoints = function(sx, sy, tx, ty) {
while (tx >= sx && ty >= sy) {
if (tx === ty) break;
if (tx > ty) {
if (ty > sy) tx %= ty;
else return (tx - sx) % ty === 0;
} else {
if (tx > sx) ty %= tx;
else return (ty - sy) % tx === 0;
}
}
return tx === sx && ty === sy;
};
``````
Copy The Code &

Input

cmd
sx = 1, sy = 1, tx = 3, ty = 5

Output

cmd
true

### #3 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:
def reachingPoints(self, sx, sy, tx, ty):
while sx``````
``` Copy The Code & Input x – + cmd sx = 1, sy = 1, tx = 2, ty = 2 ```
``` #4 Code Example with C# Programming Code - C# Programming namespace LeetCode { public class _0780_ReachingPoints { public bool ReachingPoints(int sx, int sy, int tx, int ty) { while (tx >= sx && ty >= sy) { if (tx == ty) break; if (tx > ty) { if (ty > sy) tx %= ty; else return (tx - sx) % ty == 0; } else { if (tx > sx) ty %= tx; else return (ty - sy) % tx == 0; } } return (tx == sx && ty == sy); } } } Copy The Code & Input x – + cmd sx = 1, sy = 1, tx = 2, ty = 2 Output x – + cmd false Demonstration ```
``` #779 Leetcode K-th Symbol in Grammar Solution in C, C++, Java, JavaScript, Python, C# Leetcode #781 Leetcode Rabbits in Forest Solution in C, C++, Java, JavaScript, Python, C# Leetcode ```
``` ```