洛谷 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;
	}

posted @ 2024-11-23 10:49  Justskr  阅读(37)  评论(0)    收藏  举报