# 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