1 条题解
-
0
模拟题,根据小学的分数加法的运算法则。
两分式相加,分母是两分式分母的最小公倍数,分子是各自分子和分母共同扩大的倍数相加,即:
$$\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)} $$题目要求化简为最简分数,所以直接对结果分子分母同时除以他们的最大公约数,记分子为 ,分母为 ,最后答案就是:
$$\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
- 上传者