# Maximum items that can be bought with the given type of coins

• Last Updated : 03 Mar, 2022

Given three integers X, Y and Z which represent the number of coins to buy some items. The cost of items is given below:

The task is to find the maximum number of items that can be bought with the given number of coins.

Input: X = 4, Y = 5, Z = 6
Output:
Buy 1 item of type 1: X = 1, Y = 5, Z = 6
Buy 1 item of type 2: X = 1, Y = 2, Z = 6
Buy 2 items of type 3: X = 1, Y = 2, Z = 0
Total items bought = 1 + 1 + 2 = 4
Input: X = 6, Y = 7, Z = 9
Output:

Approach: The count of items of type1, type2 and type3 that can be bought will be X / 3, Y / 3 and Z / 3 respectively. Now, the number of coins will get reduced after buying these items as X = X % 3, Y = Y % 3 and Z = Z % 3. Since, buying the item of type 4 requires a coin from each of the type. So, the total items of type 4 that can be bought will be the minimum of X, Y and Z and the result will be the sum of these items which were bought from each of the type.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `const` `int` `COST = 3;` `// Function to find maximum fruits``// Can buy from given values of x, y, z.``int` `maxItems(``int` `x, ``int` `y, ``int` `z)``{` `    ``// Items of type 1 that can be bought``    ``int` `type1 = x / COST;` `    ``// Update the coins``    ``x %= COST;` `    ``// Items of type 2 that can be bought``    ``int` `type2 = y / COST;` `    ``// Update the coins``    ``y %= COST;` `    ``// Items of type 3 that can be bought``    ``int` `type3 = z / COST;` `    ``// Update the coins``    ``z %= COST;` `    ``// Items of type 4 that can be bought``    ``// To buy a type 4 item, a coin``    ``// of each type is required``    ``int` `type4 = min(x, min(y, z));` `    ``// Total items that can be bought``    ``int` `maxItems = type1 + type2 + type3 + type4;``    ``return` `maxItems;``}` `// Driver code``int` `main()``{``    ``int` `x = 4, y = 5, z = 6;` `    ``cout << maxItems(x, y, z);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach``import` `java.io.*;` `class` `GFG``{``static` `int` `COST = ``3``;` `// Function to find maximum fruits``// Can buy from given values of x, y, z.``static` `int` `maxItems(``int` `x, ``int` `y, ``int` `z)``{` `    ``// Items of type 1 that can be bought``    ``int` `type1 = x / COST;` `    ``// Update the coins``    ``x %= COST;` `    ``// Items of type 2 that can be bought``    ``int` `type2 = y / COST;` `    ``// Update the coins``    ``y %= COST;` `    ``// Items of type 3 that can be bought``    ``int` `type3 = z / COST;` `    ``// Update the coins``    ``z %= COST;` `    ``// Items of type 4 that can be bought``    ``// To buy a type 4 item, a coin``    ``// of each type is required``    ``int` `type4 = Math.min(x, Math.min(y, z));` `    ``// Total items that can be bought``    ``int` `maxItems = type1 + type2 + type3 + type4;``    ``return` `maxItems;``}` `// Driver code``public` `static` `void` `main (String[] args)``{``    ``int` `x = ``4``, y = ``5``, z = ``6``;``    ``System.out.println(maxItems(x, y, z));``}``}` `// This code is contributed by @tushil`

## Python3

 `# Python3 implementation of the approach``COST ``=` `3``;` `# Function to find maximum fruits``# Can buy from given values of x, y, z.``def` `maxItems(x, y, z) :` `    ``# Items of type 1 that can be bought``    ``type1 ``=` `x ``/``/` `COST;` `    ``# Update the coins``    ``x ``%``=` `COST;` `    ``# Items of type 2 that can be bought``    ``type2 ``=` `y ``/``/` `COST;` `    ``# Update the coins``    ``y ``%``=` `COST;` `    ``# Items of type 3 that can be bought``    ``type3 ``=` `z ``/``/` `COST;` `    ``# Update the coins``    ``z ``%``=` `COST;` `    ``# Items of type 4 that can be bought``    ``# To buy a type 4 item, a coin``    ``# of each type is required``    ``type4 ``=` `min``(x, ``min``(y, z));` `    ``# Total items that can be bought``    ``maxItems ``=` `type1 ``+` `type2 ``+` `type3 ``+` `type4;``    ``return` `maxItems;` `# Driver code``if` `__name__ ``=``=` `"__main__"` `:` `    ``x ``=` `4``; y ``=` `5``; z ``=` `6``;` `    ``print``(maxItems(x, y, z));` `# This code is contributed by AnkitRai01`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``static` `int` `COST = 3;` `// Function to find maximum fruits``// Can buy from given values of x, y, z.``static` `int` `maxItems(``int` `x, ``int` `y, ``int` `z)``{` `    ``// Items of type 1 that can be bought``    ``int` `type1 = x / COST;` `    ``// Update the coins``    ``x %= COST;` `    ``// Items of type 2 that can be bought``    ``int` `type2 = y / COST;` `    ``// Update the coins``    ``y %= COST;` `    ``// Items of type 3 that can be bought``    ``int` `type3 = z / COST;` `    ``// Update the coins``    ``z %= COST;` `    ``// Items of type 4 that can be bought``    ``// To buy a type 4 item, a coin``    ``// of each type is required``    ``int` `type4 = Math.Min(x, Math.Min(y, z));` `    ``// Total items that can be bought``    ``int` `maxItems = type1 + type2 + type3 + type4;``    ``return` `maxItems;``}` `// Driver code``static` `public` `void` `Main ()``{``    ``int` `x = 4, y = 5, z = 6;``    ` `    ``Console.Write (maxItems(x, y, z));``}``}` `// This code is contributed by ajit..`

## Javascript

 ``

Output:

`4`

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

My Personal Notes arrow_drop_up