c++题目_T331046 分数加法
# 分数加法
## 题目描述
给定两个有理数$\frac{a}{b}$和$\frac{c}{d}$,求$\frac{e}{f}=\frac{a}{b}+\frac{c}{d}$。
## 输入格式
第一行四个整数$a,b,c,d$。
## 输出格式
一行两个整数$e,f$代表答案,要求化为最简分数。
## 样例 #1
### 样例输入 #1
```
1 1 2 2
```
### 样例输出 #1
```
2 1
```
## 提示
对于$40\%$的数据,$a,b,c,d\leq10$。
对于$80\%$的数据,$a,b,c,d\leq10^5$。
对于$100\%$的数据,$0\leq a,c\leq 10^8,1\leq b,d\leq 10^8$。
这是一水题
直接做
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,d;
cin>>a>>b>>c>>d;
a*=d;
c*=b;
int j=d;
d*=b;
b*=j;
int e,f;
e=a+c;
f=b;
int mx;
for(int i=2;i<=min(e,f);i++){
if(e%i==0&&f%i==0) {
mx=i;
}
}
cout<<e/mx<<" "<<f/mx;
return 0;
}
// a c
//------ + ------
// b d
emmm...
优化一下
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a,b,c,d;
cin>>a>>b>>c>>d;
long long e,f;
e=a*d+c*b;
f=b*d;
long long mx = __gcd(e,f); // 使用 __gcd 函数求最大公约数
e /= mx;
f /= mx;
cout<<e<<" "<<f;
return 0;
}
// a c
//------ + ------
// b d
原文地址:https://blog.csdn.net/wjl_8616/article/details/143694071
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!