Given a rectangle of sides m and n. Cut the rectangle into smaller identical pieces such that each piece is a square having maximum possible side length with no leftover part of the rectangle. Print number of such squares formed.
Examples:
Input: 9 6 Output: 6 Rectangle can be cut into squares of size 3. Input: 4 2 Output: 2 Rectangle can be cut into squares of size 2.
Approach: The task is to cut the rectangle in squares with the side of length s without pieces of the rectangle left over, so s must divide both m and n. Also, the side of the square should be maximum possible, therefore, s should be the greatest common divisor of m and n.
so, s = gcd(m, n).
To find the number of squares the rectangle is cut into, the task to be done is to divide the area of a rectangle with an area of the square of size s.
// C++ code for calculating the // number of squares #include <bits/stdc++.h> using namespace std;
// Function to find number of squares int NumberOfSquares( int x, int y)
{ // Here in built c++ gcd function is used
int s = __gcd(x, y);
int ans = (x * y) / (s * s);
return ans;
} // Driver code int main()
{ int m = 385, n = 60;
// Call the function NumberOfSquares
cout << NumberOfSquares(m, n);
return 0;
} |
// C code for calculating the // number of squares #include <stdio.h> int gcd( int a, int b)
{ int gcd = 1;
for ( int i = 1; i <= a && i <= b; i++)
{
if (a % i ==0 && b % i == 0)
gcd = i;
}
return gcd;
} // Function to find number of squares int NumberOfSquares( int x, int y)
{ // Here in built c++ gcd function is used
int s = gcd(x, y);
int ans = (x * y) / (s * s);
return ans;
} // Driver code int main()
{ int m = 385, n = 60;
// Call the function NumberOfSquares
printf ( "%d" ,NumberOfSquares(m, n));
return 0;
} // This code is contributed by kothavvsaakash. |
// Java code for calculating // the number of squares import java.io.*;
class GFG
{ // Recursive function to
// return gcd of a and b
static int __gcd( int a, int b)
{
// Everything divides 0
if (a == 0 || b == 0 )
return 0 ;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return __gcd(a - b, b);
return __gcd(a, b - a);
}
// Function to find // number of squares static int NumberOfSquares( int x,
int y)
{ // Here in built c++
// gcd function is used
int s = __gcd(x, y);
int ans = (x * y) / (s * s);
return ans;
} // Driver Code public static void main (String[] args)
{ int m = 385 , n = 60 ;
// Call the function
// NumberOfSquares
System.out.println(NumberOfSquares(m, n));
} } // This code is contributed by anuj_67. |
# Python3 code for calculating # the number of squares # Recursive function to # return gcd of a and b def __gcd(a, b):
# Everything divides 0
if (a = = 0 or b = = 0 ):
return 0 ;
# base case
if (a = = b):
return a;
# a is greater
if (a > b):
return __gcd(a - b, b);
return __gcd(a, b - a);
# Function to find # number of squares def NumberOfSquares(x, y):
# Here in built PHP
# gcd function is used
s = __gcd(x, y);
ans = (x * y) / (s * s);
return int (ans);
# Driver Code m = 385 ;
n = 60 ;
# Call the function # NumberOfSquares print (NumberOfSquares(m, n));
# This code is contributed # by mit |
// C# code for calculating // the number of squares using System;
class GFG
{ // Recursive function to
// return gcd of a and b
static int __gcd( int a, int b)
{
// Everything divides 0
if (a == 0 || b == 0)
return 0;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return __gcd(a - b, b);
return __gcd(a, b - a);
}
// Function to find // number of squares static int NumberOfSquares( int x,
int y)
{ // Here in built c++
// gcd function is used
int s = __gcd(x, y);
int ans = (x * y) /
(s * s);
return ans;
} // Driver Code static public void Main ()
{ int m = 385, n = 60;
// Call the function // NumberOfSquares Console.WriteLine(NumberOfSquares(m, n)); } } // This code is contributed by ajit |
<?php // PHP code for calculating // the number of squares // Recursive function to // return gcd of a and b function __gcd( $a , $b )
{ // Everything divides 0
if ( $a == 0 || $b == 0)
return 0;
// base case
if ( $a == $b )
return $a ;
// a is greater
if ( $a > $b )
return __gcd( $a - $b , $b );
return __gcd( $a , $b - $a );
} // Function to find // number of squares function NumberOfSquares( $x , $y )
{ // Here in built PHP
// gcd function is used
$s = __gcd( $x , $y );
$ans = ( $x * $y ) /
( $s * $s );
return $ans ;
} // Driver Code $m = 385;
$n = 60;
// Call the function // NumberOfSquares echo (NumberOfSquares( $m , $n ));
// This code is contributed // by akt_mit ?> |
<script> // Javascript code for calculating the // number of squares function __gcd(a, b)
{ // Everything divides 0
if (a == 0 || b == 0)
return 0;
// base case
if (a == b)
return a;
// a is greater
if (a > b)
return __gcd(a - b, b);
return __gcd(a, b - a);
} // Function to find number of squares function NumberOfSquares(x, y)
{ // Here in built c++ gcd function is used
let s = __gcd(x, y);
let ans = parseInt((x * y) / (s * s));
return ans;
} // Driver code let m = 385, n = 60;
// Call the function NumberOfSquares
document.write(NumberOfSquares(m, n));
</script> |
924
Time complexity: O(log(max(m,n))
Auxiliary Space: O(1)