题解
2024-02-17 19:24:33
发布于:广东
71阅读
0回复
0点赞
首先,我们得了解如何求最大公因数:辗转相除法
代码↓
int gcd(int a, int b){
if(a < b) swap(a, b);
if(b == 0) return a;
return gcd(b, a % b);
}
x与y最小公倍数就是x*y/gcd(x,y).
其次,约分就是要求最大公因数,然后两个都除以这个数就行了
void yuefen(){
int g = gcd(x, y);
x /= g, y /= g;
}
然后,由于范围问题,分母最大为10^10,所以我们得开long long
// Man!
// What can i say?
// Mamba out!
// 使用瑞克五代成功的注入ac狗.火树给我AC.
// 使我的眼睛旋转, 爱来自瓷器.
// AC时间:2024-02-17 11:45:14.1919810
/*科技第一,素质第一*/ // Man!
/*科技第一,素质第一*/ // What can i say?
/*科技第一,素质第一*/ // Mamba out!
/*科技第一,素质第一*/
/*科技第一,素质第一*/ // 使用瑞克五代成功的注入ac狗.
/*科技第一,素质第一*/ // 使我的眼睛旋转, 爱来自瓷器.
/*科技第一,素质第一*/ // AC时间:2024-02-17 11:45:14.1919810
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #include <iostream>
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #include <cstdio>
/*科技第一,素质第一 */ /*科技第一,素质第一*/ #define int long long//直接宏定义
/*科技第一,素质第一 */ /*科技第一,素质第一*/ using namespace std;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int x = 0, y = 1;//y不能等于0,否则……
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int gcd(int a, int b){//最大公因数
/*科技第一,素质第一 */ /*科技第一,素质第一*/ if(a < b) swap(a, b);
/*科技第一,素质第一 */ /*科技第一,素质第一*/ if(b == 0) return a;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ return gcd(b, a % b);
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }void yuefen(){//约分
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int g = gcd(x, y);
/*科技第一,素质第一 */ /*科技第一,素质第一*/ x /= g, y /= g;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
/*科技第一,素质第一 */ /*科技第一,素质第一*/ signed main(){//由于宏定义int为long long了,所以这里得用signed,让系统自动补上int
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int n, a, b;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ cin >> n;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ while(n--){
/*科技第一,素质第一 */ /*科技第一,素质第一*/ scanf("%lld/%lld", &a, &b);
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int newy = b * y / (gcd(y, b));//新的分母就是两个分母的最小公倍数
/*科技第一,素质第一 */ /*科技第一,素质第一*/ int x1 = x * newy / y, x2 = a * newy / b;//两个通分
/*科技第一,素质第一 */ /*科技第一,素质第一*/ x = x1 + x2, y = newy;//相加
/*科技第一,素质第一 */ /*科技第一,素质第一*/ yuefen();//约分
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }if(y == 1) cout << x;//如果分母为1直接输出
/*科技第一,素质第一 */ /*科技第一,素质第一*/ else cout << x << '/' << y;//否则以分数的形式输出
/*科技第一,素质第一 */ /*科技第一,素质第一*/
/*科技第一,素质第一 */ /*科技第一,素质第一*/ return 0;
/*科技第一,素质第一 */ /*科技第一,素质第一*/ }
这里空空如也
有帮助,赞一个