题意:分数运算,假分数化成真分数
注 :测试数据没测全,有漏洞
#include<iostream>
using namespace std;
int gcd(int a,int b) {
return !b?a:gcd(b,a%b);
}
int main() {
int n;
cin>>n;
long long a,b,f=0;
scanf("%lld/%lld",&a,&b);
int t=gcd(a,b);
a/=t;
b/=t;
f+=a/b;
a%=b;
for(int i=1; i<n; ++i) {
long long c,d;
scanf("%lld/%lld",&c,&d);
t=b;
b*=d;//分母
a=a*d+t*c;//分子
t=gcd(a,b);
a/=t;
b/=t;
f+=a/b;//整数部分
a%=b;
}
if(b<0) {//符号只出现在数字前面,测试点没有这点
b*=-1;
a*=-1;
}
if(!a)
cout<<f;
else if(f)
cout<<f<<" "<<a<<"/"<<b;
else if(a)cout<<a<<"/"<<b;
return 0;
}
江楚郎(已婚 发布了298 篇原创文章 · 获赞 15 · 访问量 1万+ 私信 关注