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 = 1Output: 2Explanation:Input: n = 2Output: 4Explanation:Input: n = 3Output: 6Explanation:

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++

`// 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; ` `} ` |

*chevron_right*

*filter_none*

## Java

`// 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 ` |

*chevron_right*

*filter_none*

## Python 3

`# 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 ` |

*chevron_right*

*filter_none*

## C#

`// 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 ` |

*chevron_right*

*filter_none*

## PHP

`<?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) ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

Max number of pieces for n = 3 is 6

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the **DSA Self Paced Course** at a student-friendly price and become industry ready.

## Recommended Posts:

- Count pieces of circle after N cuts
- Possible cuts of a number such that maximum parts are divisible by 3
- Minimum number of cuts required to pay salary from N length Gold Bar
- Minimum number of cuts required to make circle segments equal sized
- Number of ways to cut a stick of length N into in even length at most K units long pieces
- Minimize number of cuts required to break N length stick into N unit length sticks
- Probability of cutting a rope into three pieces such that the sides form a triangle
- Probability that the pieces of a broken stick form a n sided polygon
- Minimum Cuts can be made in the Chessboard such that it is not divided into 2 parts
- Minimum cuts required to divide the Circle into equal parts
- Find the largest number smaller than integer N with maximum number of set bits
- Largest number dividing maximum number of elements in the array
- Find maximum number that can be formed using digits of a given number
- Querying maximum number of divisors that a number in a given range has
- Find the maximum number of composite summands of a number
- Represent a number as a sum of maximum possible number of Prime Numbers
- Number with maximum number of prime factors
- Maximum possible number with the given operation
- Number of subsets whose mean is maximum
- Find M such that GCD of M and given number N is maximum

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.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.