1 条题解

  • 0
    @ 2024-12-24 1:26:18

    模拟题,根据小学的分数加法的运算法则。

    两分式相加,分母是两分式分母的最小公倍数,分子是各自分子和分母共同扩大的倍数相加,即:

    $$\frac ab+\frac cd=\frac{a\times \frac{\text{lcm}(b,d)}{b} + c\times \frac{\text{lcm}(b,d)}{d}}{\text{lcm}(b,d)} $$

    题目要求化简为最简分数,所以直接对结果分子分母同时除以他们的最大公约数,记分子为 ee,分母为 ff,最后答案就是:

    $$\frac{e}{f}=\frac{\frac{e}{\gcd(e,f)}}{\frac{f}{\gcd(e,f)}} $$

    参考代码:

    #include <bits/stdc++.h>
    
    using u32 = unsigned;
    using i64 = long long;
    using u64 = unsigned long long;
    using u128 = unsigned __int128;
    
    int gcd(int a, int b) {
    	return b ? gcd(b, a % b) : a;
    }
    
    int lcm(int a, int b) {
    	return a * b / gcd(a, b);
    }
    
    void solve() {
    	int a, b, c, d;
    	std::cin >> a >> b >> c >> d;
    	int f = lcm(b, d);
    	int e = a * f / b + c * f / d;
    	int g = gcd(f, e);
    	std::cout << e / g << " " << f / g << "\n";
    }
    
    int main() {
    	std::ios::sync_with_stdio(false);
    	std::cin.tie(nullptr);
    
    	int t; 
    	std::cin >> t;
    	while (t --) {
    		solve();
    	}
    
    	return 0;
    }
    
    • 1

    信息

    ID
    149
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    递交数
    26
    已通过
    17
    上传者