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;
}

 

1081 Rational Sum1081 Rational Sum 江楚郎(已婚 发布了298 篇原创文章 · 获赞 15 · 访问量 1万+ 私信 关注
上一篇:PAT 乙级 1081 检查密码 (15分)


下一篇:cuda9.0 linux版官网下载网址