Given a number k, find the required minimum number of Fibonacci terms whose sum equal to k. We can choose a Fibonacci number multiple times.
Input : k = 4 Output : 2 Fibonacci term added twice that is 2 + 2 = 4. Other combinations are 1 + 1 + 2. 1 + 1 + 1 + 1 Among all cases first case has the minimum number of terms = 2. Input : k = 17 Output : 3
We can get any sum using Fibonacci numbers as 1 is a Fibonacci number. For example to get n, we can n times add 1. Here we need to to minimize the count of Fibonacci numbers that contribute to sum. So this problem is basically coin change problem with coins having fibonacci values. By taking some examples, we can notice that With Fibonacci coin values Greedy approach works.
Firstly we calculate Fibonacci terms till less than or equal to k. then start from the last term and keep subtracting that term from k until k >(nth term). Also along with this keep increasing the count of the number of terms.
When k < (nth Fibonacci term) move to next Fibonacci term which is less than or Equal to k. at last, print the value of count.
The stepwise algorithm is:
1. Find all Fibonacci Terms less than or equal to K. 2. Initialize count = 0. 3. j = Index of last calculated Fibonacci Term. 4. while K > 0 do: // Greedy step count += K / (fibo[j]) // Note that division // is repeated subtraction. K = K % (fibo[j]) j--; 5. Print count.
Below is the C++/java implementation of the above approach.
- Divide 1 to n into two groups with minimum sum difference
- Coin Change | DP-7
- Maximum number of customers that can be satisfied with given quantity
- Activity Selection Problem | Greedy Algo-1
- Minimum Number of Platforms Required for a Railway/Bus Station
- Minimize Cash Flow among a given set of friends who have borrowed money from each other
- Minimum Cost to cut a board into squares
- Minimum edges to reverse to make path from a source to a destination
- Greedy Algorithm to find Minimum number of Coins
- Buy Maximum Stocks if i stocks can be bought on i-th day
- Minimum cost to make array size 1 by removing larger of pairs
- Dijkstra’s shortest path algorithm | Greedy Algo-7
- Split n into maximum composite numbers
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.