Given three integers X, Y and Z which represent the number of coins to buy some items. The cost of items is given below:
Item type | Cost |
---|---|
1 | 3 X coins |
2 | 3 Y coins |
3 | 3 Z coins |
4 | 1 X coin + 1 Y coin + 1 Z coin |
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: 4
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: 7
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++ implementation of the approach #include <iostream> 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 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 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# 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.. |
<script> // Javascript implementation of the approach const COST = 3; // Function to find maximum fruits // Can buy from given values of x, y, z. function maxItems(x, y, z)
{ // Items of type 1 that can be bought
let type1 = parseInt(x / COST);
// Update the coins
x %= COST;
// Items of type 2 that can be bought
let type2 = parseInt(y / COST);
// Update the coins
y %= COST;
// Items of type 3 that can be bought
let type3 = parseInt(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
let type4 = Math.min(x, Math.min(y, z));
// Total items that can be bought
let maxItems = type1 + type2 + type3 + type4;
return maxItems;
} // Driver code let x = 4, y = 5, z = 6;
document.write(maxItems(x, y, z));
</script> |
4
Time Complexity : O(1)
Auxiliary Space : O(1)