📌  相关文章
📜  均匀切割矩形的最小正方形

📅  最后修改于: 2021-10-23 08:21:48             🧑  作者: Mango

给定一个长为 l 宽为 w 的矩形片。我们需要将这张纸分成正方形的纸,这样正方形纸的数量应该尽可能少。
例子:

正方形边的最佳长度等于两个数字的 GCD

C++
// CPP program to find minimum number of
// squares to make a given rectangle.
#include 
using namespace std;
 
int countRectangles(int l, int w)
{
    // if we take gcd(l, w), this
    // will be largest possible
    // side for square, hence minimum
    // number of square.
    int squareSide = __gcd(l, w);
 
    // Number of squares.
    return (l * w) / (squareSide * squareSide);
}
 
// Driver code
int main()
{
    int l = 4, w = 6;
    cout << countRectangles(l, w) << endl;
    return 0;
}


Java
// Java program to find minimum number of
// squares to make a given rectangle.
 
class GFG{
static int __gcd(int a, int b) {
   if (b==0) return a;
   return __gcd(b,a%b);
}
static int countRectangles(int l, int w)
{
    // if we take gcd(l, w), this
    // will be largest possible
    // side for square, hence minimum
    // number of square.
    int squareSide = __gcd(l, w);
 
    // Number of squares.
    return (l * w) / (squareSide * squareSide);
}
 
// Driver code
public static void main(String[] args)
{
    int l = 4, w = 6;
    System.out.println(countRectangles(l, w));
}
}
// This code is contributed by mits


Python3
# Python3 code to find minimum number of
# squares to make a given rectangle.
 
import math
 
def countRectangles(l, w):
 
    # if we take gcd(l, w), this
    # will be largest possible
    # side for square, hence minimum
    # number of square.
    squareSide = math.gcd(l,w)
     
    # Number of squares.
    return (l*w)/(squareSide*squareSide)
 
# Driver Code
         
if __name__ == '__main__':
    l = 4
    w = 6
    ans = countRectangles(l, w)
    print (int(ans))
 
# this code is contributed by
# SURENDRA_GANGWAR


C#
// C# program to find minimum number of
// squares to make a given rectangle.
 
class GFG{
static int __gcd(int a, int b) {
if (b==0) return a;
return __gcd(b,a%b);
}
static int countRectangles(int l, int w)
{
    // if we take gcd(l, w), this
    // will be largest possible
    // side for square, hence minimum
    // number of square.
    int squareSide = __gcd(l, w);
 
    // Number of squares.
    return (l * w) / (squareSide * squareSide);
}
 
// Driver code
public static void Main()
{
    int l = 4, w = 6;
    System.Console.WriteLine(countRectangles(l, w));
}
}
// This code is contributed by mits


PHP


Javascript


输出:
6

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程