How to Fold a Paper Into 10 Squares

Paper Cut into Minimum Number of Squares

Given a paper of size, A x B. Task is to cut the paper into squares of any size. Find the minimum number of squares that can be cut from the paper.
Examples:

Input  : 13 x 29 Output : 9 Explanation :  2 (squares of size 13x13) +  4 (squares of size 3x3) +  3 (squares of size 1x1)=9  Input  : 4 x 5 Output : 5 Explanation :  1 (squares of size 4x4) +  4 (squares of size 1x1)

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course .

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

We know that if we want to cut a minimum number of squares from the paper then we would have to cut the largest square possible from the paper first and the largest square will have the same side as the smaller side of the paper. For example, if the paper has the size 13 x 29, then the maximum square will be of side 13. so we can cut 2 square of size 13 x 13 (29/13 = 2). Now remaining paper will have size 3 x 13. Similarly, we can cut the remaining paper by using 4 squares of size 3 x 3 and 3 squares of 1 x 1. So a minimum of 9 squares can be cut from the Paper of size 13 x 29.


dig1

Below is the implementation of the above approach.

C++

#include<bits/stdc++.h>

using namespace std;

int minimumSquare( int a, int b)

{

long long result = 0, rem = 0;

if (a < b)

swap(a, b);

while (b > 0)

{

result += a/b;

long long rem = a % b;

a = b;

b = rem;

}

return result;

}

int main()

{

int n = 13, m = 29;

cout << minimumSquare(n, m);

return 0;

}

Java

class GFG{

static void swap( int a, int b)

{

int temp = a;

a = b;

b = temp;

}

static int minimumSquare( int a, int b)

{

int result = 0 , rem = 0 ;

if (a < b)

swap(a, b);

while (b > 0 )

{

result += a/b;

rem = a % b;

a = b;

b = rem;

}

return result;

}

public static void main(String[] args)

{

int n = 13 , m = 29 ;

System.out.println(minimumSquare(n, m));

}

}

Python3

def minimumSquare(a, b):

result = 0

rem = 0

if (a < b):

a, b = b, a

while (b > 0 ):

result + = int (a / b)

rem = int (a % b)

a = b

b = rem

return result

n = 13

m = 29

print (minimumSquare(n, m))

C#

using System;

class GFG

{

static void swap( int a, int b)

{

int temp = a;

a = b;

b = temp;

}

static int minimumSquare( int a, int b)

{

int result = 0, rem = 0;

if (a < b)

swap(a, b);

while (b > 0)

{

result += a / b;

rem = a % b;

a = b;

b = rem;

}

return result;

}

public static void Main(String[] args)

{

int n = 13, m = 29;

Console.WriteLine(minimumSquare(n, m));

}

}

Javascript

<script>

function minimumSquare(a, b)

{

let result = 0, rem = 0;

if (a < b) {

let temp = a;

a = b;

b = temp;

}

while (b > 0)

{

result += parseInt(a/b);

let rem = a % b;

a = b;

b = rem;

}

return result;

}

let n = 13, m = 29;

document.write(minimumSquare(n, m));

</script>

Output:

9

Note that the above Greedy solution doesn't always produce an optimal result. For example, if the input is 36 x 30, the above algorithm would produce output 6, but we can cut the paper into 5 squares
1) Three squares of size 12 x 12
2) Two squares of size 18 x 18.
Thanks to Sergey V. Pereslavtsev for pointing out the above case.
This article is contributed by Kuldeep Singh(kulli_d_coder). 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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


How to Fold a Paper Into 10 Squares

Source: https://www.geeksforgeeks.org/paper-cut-minimum-number-squares/

0 Response to "How to Fold a Paper Into 10 Squares"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel