# Find the vertex diagonally opposite to the vertex M from an N-sided polygon

Given two integers **N** and **M**, the task is to find the vertex diagonally opposite to the **M ^{th}** vertex of an

**N-sided**polygon.

**Examples:**

Input:N = 6, M = 2Output:5Explanation:It can be observed from the image above that the vertex opposite to vertex 5 is 2.

Input:N = 8, M = 5Output:1Explanation:It can be observed from the image above that the vertex opposite to vertex 8 is 1.

**Approach:** The following two cases need to be considered to solve the given problem:

**If M > N / 2:**The vertex will always be**M — (N / 2)**.**If M ≤ N / 2:**The vertex will always be**M + (N / 2)**.

Below is the implementation of the above approach:

## C++

`// C++ program for the above approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the` `// required vertex` `int` `getPosition(` `int` `N, ` `int` `M)` `{` ` ` `// Case 1:` ` ` `if` `(M > (N / 2)) {` ` ` `return` `(M - (N / 2));` ` ` `}` ` ` `// Case 2:` ` ` `return` `(M + (N / 2));` `}` `// Driver Code` `int` `main()` `{` ` ` `int` `N = 8, M = 5;` ` ` `cout << getPosition(N, M);` ` ` `return` `0;` `}` |

## Java

`// Java program for` `// the above approach` `class` `GFG{` `// Function to return the` `// required vertex` `static` `int` `getPosition(` `int` `N,` ` ` `int` `M)` `{` ` ` `// Case 1:` ` ` `if` `(M > (N / ` `2` `))` ` ` `{` ` ` `return` `(M - (N / ` `2` `));` ` ` `}` ` ` `// Case 2:` ` ` `return` `(M + (N / ` `2` `));` `}` `// Driver Code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `N = ` `8` `, M = ` `5` `;` ` ` `System.out.print(getPosition(N, M));` `}` `}` `// This code is contributed by Rajput-Ji` |

## Python3

`# Python3 program for the` `# above approach` `# Function to return the` `# required vertex` `def` `getPosition(N, M):` ` ` ` ` `# Case 1:` ` ` `if` `(M > (N ` `/` `/` `2` `)):` ` ` `return` `(M ` `-` `(N ` `/` `/` `2` `))` ` ` ` ` `# Case 2:` ` ` `return` `(M ` `+` `(N ` `/` `/` `2` `))` ` ` `# Driver Code` `N ` `=` `8` `M ` `=` `5` `print` `(getPosition(N, M))` `# This code is contributed by code_hunt` |

## C#

`// C# program for the above approach` `using` `System;` `class` `GFG{` `// Function to return the` `// required vertex` `static` `int` `getPosition(` `int` `N, ` `int` `M)` `{` ` ` ` ` `// Case 1:` ` ` `if` `(M > (N / 2))` ` ` `{` ` ` `return` `(M - (N / 2));` ` ` `}` ` ` ` ` `// Case 2:` ` ` `return` `(M + (N / 2));` `}` `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` ` ` `int` `N = 8, M = 5;` ` ` ` ` `Console.Write(getPosition(N, M));` `}` `}` `// This code is contributed by Amit Katiyar` |

## Javascript

`<script>` `// Javascript program for the above approach` `// Function to return the` `// required vertex` `function` `getPosition(N, M)` `{` ` ` `// Case 1:` ` ` `if` `(M > parseInt(N / 2)) {` ` ` `return` `(M - parseInt(N / 2));` ` ` `}` ` ` `// Case 2:` ` ` `return` `(M + parseInt(N / 2));` `}` `// Driver Code` `var` `N = 8, M = 5;` `document.write(getPosition(N, M));` `</script>` |

**Output:**

1

**Time Complexity:** O(1)**Auxiliary Space:** O(1)