Given a square piece and a total number of cuts available n, Find out the maximum number of rectangular or square pieces of equal size that can be obtained with n cuts. The allowed cuts are horizontal and vertical cut.
Note: Stacking and folding is not allowed.
Examples:
Input : n = 1 Output : 2 Explanation :
Input : n = 2 Output : 4 Explanation :
Input : n = 3 Output : 6 Explanation :
Given is n which is the number of allowed cuts. As it is required to maximize number of pieces after n cuts, So number of horizontal cuts will be equal to number of vertical cuts. This can be prove using differentiation. So number of horizontal cut will be n/2. and vertical cuts will be n-n/2.
So number of pieces = (horizontal cut + 1) * (vertical cut + 1).
Program:
// C++ program to find maximum no of pieces // by given number of cuts #include <bits/stdc++.h> using namespace std;
// Function for finding maximum pieces // with n cuts. int findMaximumPieces( int n)
{ // to maximize number of pieces
// x is the horizontal cuts
int x = n / 2;
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
} // Driver code int main()
{ // Taking the maximum number of cuts allowed as 3
int n = 3;
// Finding and printing the max number of pieces
cout << "Max number of pieces for n = " << n
<< " is " << findMaximumPieces(3);
return 0;
} |
// Java program to find maximum // no of pieces by given number // of cuts import java.util.*;
class GFG
{ // Function for finding maximum // pieces with n cuts. public static int findMaximumPieces( int n)
{ // to maximize number of pieces
// x is the horizontal cuts
int x = n / 2 ;
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1 ) * (n - x + 1 ));
} // Driver code public static void main (String[] args)
{ // Taking the maximum number
// of cuts allowed as 3
int n = 3 ;
// Finding and printing the
// max number of pieces
System.out.print( "Max number of pieces for n = " +
n + " is " + findMaximumPieces( 3 ));
} } // This code is contributed by Kirti_Mangal |
# Python 3 program to find maximum no of pieces # by given number of cuts # Function for finding maximum pieces # with n cuts. def findMaximumPieces(n):
# to maximize number of pieces
# x is the horizontal cuts
x = n / / 2
# Now (x) is the horizontal cuts
# and (n-x) is vertical cuts, then
# maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1 ) * (n - x + 1 ))
# Driver code if __name__ = = "__main__" :
#Taking the maximum number of cuts allowed as 3
n = 3
# Finding and printing the max number of pieces
print ( "Max number of pieces for n = " + str ( n)
+ " is " + str (findMaximumPieces( 3 )))
# This code is contributed by ChitraNayal |
// C# program to find maximum // no of pieces by given number // of cuts using System;
class GFG
{ // Function for finding maximum // pieces with n cuts. public static int findMaximumPieces( int n)
{ // to maximize number of pieces
// x is the horizontal cuts
int x = n / 2;
// Now (x) is the horizontal
// cuts and (n-x) is vertical
// cuts, then maximum number
// of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
} // Driver code static public void Main ()
{ // Taking the maximum number
// of cuts allowed as 3
int n = 3;
// Finding and printing the
// max number of pieces
Console.Write( "Max number of pieces for n = " +
n + " is " + findMaximumPieces(3));
} } // This code is contributed by Mahadev |
<?php // PHP program to find maximum no // of pieces by given number of cuts // Function for finding maximum // pieces with n cuts. function findMaximumPieces( $n )
{ // to maximize number of pieces
// x is the horizontal cuts
$x = (int)( $n / 2);
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return (( $x + 1) * ( $n - $x + 1));
} // Driver code // Taking the maximum number // of cuts allowed as 3 $n = 3;
// Finding and printing the // max number of pieces echo "Max number of pieces for n = " .
$n . " is " . findMaximumPieces(3);
// This code is contributed // by Akanksha Rai(Abby_akku) ?> |
<script> // Javascript program to find maximum no of pieces // by given number of cuts // Function for finding maximum pieces // with n cuts. function findMaximumPieces(n)
{ // to maximize number of pieces
// x is the horizontal cuts
var x = parseInt(n / 2);
// Now (x) is the horizontal cuts
// and (n-x) is vertical cuts, then
// maximum number of pieces = (x+1)*(n-x+1)
return ((x + 1) * (n - x + 1));
} // Driver code // Taking the maximum number of cuts allowed as 3 var n = 3;
// Finding and printing the max number of pieces document.write( "Max number of pieces for n = " + n
+ " is " + findMaximumPieces(3));
// This code is contributed by noob2000. </script> |
Max number of pieces for n = 3 is 6
Time Complexity: O(1)
Auxiliary Space: O(1)