洛谷 SP10575 题解
SP10575 题解
一道水题,尤其样例比较水,建议评红。
建议没有英语基础的人谨慎开题,因为没有翻译,虽然机翻也足够解题。
大概题意就是要把几个立方体,完全分割成许多正方体,要求正方体的棱长尽可能大,且长方体不能有任何剩余,要求分割成正方体的个数。
解题思路
一眼求最大公因数的题,思路非常简单,这里我们主要运用 __gcd() 函数。
先要分别求出每块长方体长宽高的最大公因数 \(ga\),\(gb\),\(gc\),再用长方体的总体积除以 \(ga\),\(gb\),\(gc\) 的最大公因数的立方得出正方体的个数。
代码实现
直接给出代码:
ll n,a,b,c;
ll ga,gb,gc;//存储各数最大公因数
ll mul;//存储长方体总体积
while(cin >> n){
mul = 0;
if(n == 0) return 0;
for(ll i = 1;i <= n;i++){
cin >> a >> b >> c;
mul += a*b*c;
if(i == 1){
ga = a;
gb = b;
gc = c;
continue;
}
ga = __gcd(a,ga);
gb = __gcd(b,gb);
gc = __gcd(c,gc);
}
//输出答案
cout << mul / (__gcd(__gcd(ga,gb),__gcd(gb,gc)) * __gcd(__gcd(ga,gb),__gcd(gb,gc)) * __gcd(__gcd(ga,gb),__gcd(gb,gc))) << endl;
}

浙公网安备 33010602011771号