其他分享
首页 > 其他分享> > 1081 Rational Sum

1081 Rational Sum

作者:互联网

题目

题意:分数运算,假分数化成真分数

:测试数据没测全,有漏洞

#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万+ 私信 关注

标签:a%,gcd,1081,int,Sum,long,Rational,假分数,lld
来源: https://blog.csdn.net/qq_40991687/article/details/104094622