一道水题,题意:给出两个数字作为长方形的长和宽,问最少需要多少个长方形才能拼成一个正方形。
思路:求两个数的最小公倍数,然后求出这两个数分别除掉最小公倍数之后的乘积。
详解:
长和宽互质的长方形拼成正方形的最小个数就是:其长和宽的乘积。如果长和宽不互质,那么只需除掉长和宽的最小公倍数即可。
代码:
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
long long gcd(long long n, long long m)
{
return n % m == 0 ? m : gcd(m, n % m);
}
int main()
{
long long n, m;
while(cin >> n >> m)
{
if(n == 0 || m == 0) break;
long long xx = gcd(n, m);
cout << (n / xx) * (m / xx) << endl;
}
return 0;
}