# Minimum number of elements to be replaced to make the given array a Fibonacci Sequence

• Difficulty Level : Basic
• Last Updated : 09 Jun, 2021

Given an array arr containing N integer elements, the task is to count the minimum number of elements that need to be changed such that all the elements (after proper rearrangement) make first N terms of Fibonacci Series.
Examples:

Input: arr[] = {4, 1, 2, 1, 3, 7}
Output:
4 and 7 must be changed to 5 and 8 to make first N(6) terms of Fibonacci series.
Input: arr[] = {5, 3, 1, 1, 2, 8, 11}
Output:
11 must be changed to 13.

Approach:

• Insert first N elements of Fibonacci series into a multi set.
• Then, traverse the array from left to right and check if the current element is present in multi set.
• If element is present in the multi set then remove it.
• Final answer will be the size of final multi set.

Below is the implementation of the above approach:

## C++

 `// C++ program to find the minimum number` `// of elements the need to be changed` `// to get first N numbers of Fibonacci series` `#include ` `using` `namespace` `std;`   `// Function that finds minimum changes required` `int` `fibonacciArray(``int` `arr[], ``int` `n)` `{` `    ``multiset<``int``> s;`   `    ``// a and b are first two` `    ``// fibonacci numbers` `    ``int` `a = 1, b = 1;` `    ``int` `c;`   `    ``// insert first n fibonacci elements to set` `    ``s.insert(a);` `    ``if` `(n >= 2)` `        ``s.insert(b);`   `    ``for` `(``int` `i = 0; i < n - 2; i++) {` `        ``c = a + b;` `        ``s.insert(c);` `        ``a = b;` `        ``b = c;` `    ``}`   `    ``multiset<``int``>::iterator it;` `    ``for` `(``int` `i = 0; i < n; i++) {`   `        ``// if fibonacci element is present` `        ``// in the array then remove it from set` `        ``it = s.find(arr[i]);` `        ``if` `(it != s.end())` `            ``s.erase(it);` `    ``}`   `    ``// return the remaining number of` `    ``// elements in the set` `    ``return` `s.size();` `}`   `// Driver code` `int` `main()` `{` `    ``int` `arr[] = { 3, 1, 21, 4, 2, 1, 8, 9 };` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr);`   `    ``cout << fibonacciArray(arr, n);`   `    ``return` `0;` `}`

## Java

 `// Java program to find the minimum number ` `// of elements the need to be changed ` `// to get first N numbers of Fibonacci series ` `import` `java.util.*;`   `class` `geeks` `{`   `    ``// Function that finds minimum changes required` `    ``public` `static` `int` `fibonacciArray(``int``[] arr, ``int` `n) ` `    ``{` `        ``Set s = ``new` `HashSet();`   `        ``// a and b are first two` `        ``// fibonacci numbers` `        ``int` `a = ``1``, b = ``1``;` `        ``int` `c;`   `        ``// insert first n fibonacci elements to set` `        ``s.add(a);` `        ``if` `(n > ``2``)` `            ``s.add(b);`   `        ``for` `(``int` `i = ``0``; i < n - ``2``; i++)` `        ``{` `            ``c = a + b;` `            ``s.add(c);` `            ``a = b;` `            ``b = c;` `        ``}`   `        ``for` `(``int` `i = ``0``; i < n; i++)` `        ``{`   `            ``// if fibonacci element is present` `            ``// in the array then remove it from set` `            ``if` `(s.contains(arr[i]))` `                ``s.remove(arr[i]);` `        ``}`   `        ``// return the remaining number of` `        ``// elements in the set` `        ``return` `s.size();` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args) ` `    ``{` `        ``int``[] arr = { ``3``, ``1``, ``21``, ``4``, ``2``, ``1``, ``8``, ``9` `};` `        ``int` `n = arr.length;`   `        ``System.out.print(fibonacciArray(arr, n));` `    ``}` `}`   `// This code is contributed by` `// sanjeev2552`

## Python3

 `# Python3 program to find the minimum number ` `# of elements the need to be changed ` `# to get first N numbers of Fibonacci series `   `# Function that finds minimum changes required ` `def` `fibonacciArray(arr, n): `   `    ``s ``=` `set``() `   `    ``# a and b are first two ` `    ``# fibonacci numbers ` `    ``a, b ``=` `1``, ``1`   `    ``# insert first n fibonacci elements to set ` `    ``s.add(a) ` `    ``if` `n >``=` `2``: ` `        ``s.add(b) `   `    ``for` `i ``in` `range``(``0``, n ``-` `2``): ` `        ``c ``=` `a ``+` `b ` `        ``s.add(c) ` `        ``a, b ``=` `b, c `   `    ``for` `i ``in` `range``(``0``, n): `   `        ``# if fibonacci element is present in ` `        ``# the array then remove it from set ` `        ``if` `arr[i] ``in` `s: ` `            ``s.remove(arr[i]) `   `    ``# return the remaining number ` `    ``# of elements in the set ` `    ``return` `len``(s) `   `# Driver code ` `if` `__name__ ``=``=` `"__main__"``: `   `    ``arr ``=` `[``3``, ``1``, ``21``, ``4``, ``2``, ``1``, ``8``, ``9``] ` `    ``n ``=` `len``(arr) `   `    ``print``(fibonacciArray(arr, n))`   `# This code is contributed by Rituraj Jain`

## C#

 `// C# program to find the minimum number ` `// of elements the need to be changed ` `// to get first N numbers of Fibonacci series ` `using` `System;` `using` `System.Collections.Generic;` `    `  `public` `class` `geeks` `{`   `    ``// Function that finds minimum changes required` `    ``public` `static` `int` `fibonacciArray(``int``[] arr, ``int` `n) ` `    ``{` `        ``HashSet<``int``> s = ``new` `HashSet<``int``>();`   `        ``// a and b are first two` `        ``// fibonacci numbers` `        ``int` `a = 1, b = 1;` `        ``int` `c;`   `        ``// insert first n fibonacci elements to set` `        ``s.Add(a);` `        ``if` `(n > 2)` `            ``s.Add(b);`   `        ``for` `(``int` `i = 0; i < n - 2; i++)` `        ``{` `            ``c = a + b;` `            ``s.Add(c);` `            ``a = b;` `            ``b = c;` `        ``}`   `        ``for` `(``int` `i = 0; i < n; i++)` `        ``{`   `            ``// if fibonacci element is present` `            ``// in the array then remove it from set` `            ``if` `(s.Contains(arr[i]))` `                ``s.Remove(arr[i]);` `        ``}`   `        ``// return the remaining number of` `        ``// elements in the set` `        ``return` `s.Count;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `Main(String[] args) ` `    ``{` `        ``int``[] arr = { 3, 1, 21, 4, 2, 1, 8, 9 };` `        ``int` `n = arr.Length;`   `        ``Console.WriteLine(fibonacciArray(arr, n));` `    ``}` `}`   `// This code is contributed by Rajput-Ji`

## Javascript

 ``

Output:

`2`

My Personal Notes arrow_drop_up
Recommended Articles
Page :