# Find the Nth term of the series where each term f[i] = f[i – 1] – f[i – 2]

Given three integers **X**, **Y** and **N**, the task is to find the **N ^{th}** term of the series

**f[i] = f[i – 1] – f[i – 2]**,

**i > 1**where

**f[0] = X**and

**f[1] = Y**.

**Examples:**

Input:X = 2, Y = 3, N = 3Output:-2

The series will be 2 3 1 -2 -3 -1 2 and f[3] = -2Input:X = 3, Y = 7, N = 8Output:4

**Approach:** An important observation here is that there will be atmost 6 distinct terms, before the sequence starts repeating itself. So, find the first 6 terms of the series and then the **N ^{th}** term would be same as the

**(N % 6)**term.

^{th}Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to return the Nth term` `// of the given series` `int` `findNthTerm(` `int` `x, ` `int` `y, ` `int` `n)` `{` ` ` `int` `f[6];` ` ` `// First and second term of the series` ` ` `f[0] = x;` ` ` `f[1] = y;` ` ` `// Find first 6 terms` ` ` `for` `(` `int` `i = 2; i <= 5; i++)` ` ` `f[i] = f[i - 1] - f[i - 2];` ` ` `// Return the Nth term` ` ` `return` `f[n % 6];` `}` `// Driver code` `int` `main()` `{` ` ` `int` `x = 2, y = 3, n = 3;` ` ` `cout << findNthTerm(x, y, n);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `import` `java.io.*;` `class` `GFG` `{` ` ` ` ` `// Function to find the nth term of series` ` ` `static` `int` `findNthTerm(` `int` `x, ` `int` `y, ` `int` `n)` ` ` `{ ` ` ` `int` `[] f = ` `new` `int` `[` `6` `];` ` ` ` ` `f[` `0` `] = x;` ` ` `f[` `1` `] = y;` ` ` ` ` `// Loop to add numbers` ` ` `for` `(` `int` `i = ` `2` `; i <= ` `5` `; i++)` ` ` `f[i] = f[i - ` `1` `] - f[i - ` `2` `];` ` ` ` ` `return` `f[n % ` `6` `];` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main(String args[])` ` ` `{` ` ` `int` `x = ` `2` `, y = ` `3` `, n = ` `3` `;` ` ` `System.out.println(findNthTerm(x, y, n));` ` ` `}` `}` `// This code is contributed by mohit kumar 29` |

## Python3

`# Python3 implementation of the approach` `# Function to return the Nth term` `# of the given series` `def` `findNthTerm(x, y, n):` ` ` `f ` `=` `[` `0` `] ` `*` `6` ` ` `# First and second term of` ` ` `# the series` ` ` `f[` `0` `] ` `=` `x` ` ` `f[` `1` `] ` `=` `y` ` ` `# Find first 6 terms` ` ` `for` `i ` `in` `range` `(` `2` `, ` `6` `):` ` ` `f[i] ` `=` `f[i ` `-` `1` `] ` `-` `f[i ` `-` `2` `]` ` ` `# Return the Nth term` ` ` `return` `f[n ` `%` `6` `]` `# Driver code` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `x, y, n ` `=` `2` `, ` `3` `, ` `3` ` ` `print` `(findNthTerm(x, y, n))` `# This code is contributed by` `# Rituraj Jain` |

## C#

`// C# implementation of the approach` `using` `System;` `class` `GFG` `{` ` ` ` ` `// Function to find the nth term of series` ` ` `static` `int` `findNthTerm(` `int` `x, ` `int` `y, ` `int` `n)` ` ` `{` ` ` `int` `[] f = ` `new` `int` `[6];` ` ` ` ` `f[0] = x;` ` ` `f[1] = y;` ` ` ` ` `// Loop to add numbers` ` ` `for` `(` `int` `i = 2; i <= 5; i++)` ` ` `f[i] = f[i - 1] - f[i - 2];` ` ` ` ` `return` `f[n % 6];` ` ` `}` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `x = 2, y = 3, n = 3;` ` ` `Console.WriteLine(findNthTerm(x, y, n));` ` ` `}` `}` `// This code is contributed by Ryuga` |

## PHP

`<?php` `//PHP implementation of the approach` `// Function to find the nth term of series` `function` `findNthTerm(` `$x` `, ` `$y` `, ` `$n` `)` `{` ` ` `$f` `= ` `array` `(6);` ` ` ` ` `$f` `[0] = ` `$x` `;` ` ` `$f` `[1] = ` `$y` `;` ` ` ` ` `// Loop to add numbers` ` ` `for` `(` `$i` `= 2; ` `$i` `<= 5; ` `$i` `++)` ` ` `$f` `[` `$i` `] = ` `$f` `[` `$i` `- 1] - ` `$f` `[` `$i` `- 2];` ` ` ` ` `return` `$f` `[` `$n` `% 6];` `}` `// Driver code` `$x` `= 2; ` `$y` `= 3; ` `$n` `= 3;` `echo` `(findNthTerm(` `$x` `, ` `$y` `, ` `$n` `));` `// This code is contributed by Code_Mech.` `?>` |

## Javascript

`<script>` `// JavaScript implementation of the approach` ` ` `// Function to return the Nth term` ` ` `// of the given series` ` ` `function` `findNthTerm(x, y, n)` ` ` `{` ` ` `let f = ` `new` `Array(6);` ` ` ` ` `// First and second term of the series` ` ` `f[0] = x;` ` ` `f[1] = y;` ` ` ` ` `// Find first 6 terms` ` ` `for` `(let i = 2; i <= 5; i++)` ` ` `f[i] = f[i - 1] - f[i - 2];` ` ` ` ` `// Return the Nth term` ` ` `return` `f[n % 6];` ` ` `}` ` ` ` ` `// Driver code` ` ` `let x = 2, y = 3, n = 3;` ` ` `document.write(findNthTerm(x, y, n));` ` ` `// This code is contributed by Surbhi Tyagi` `</script>` |

**Output:**

-2

**Time Complexity:** O(1)