1081 Rational Sum

Given N rational numbers in the form numerator/denominator, you are supposed to calculate their sum.

Input Specification:

Each input file contains one test case. Each case starts with a positive integer N (≤100), followed in the next line N rational numbers a1/b1 a2/b2 … where all the numerators and denominators are in the range of long int. If there is a negative number, then the sign must appear in front of the numerator.

Output Specification:

For each test case, output the sum in the simplest form integer numerator/denominator where integer is the integer part of the sum, numerator < denominator, and the numerator and the denominator have no common factor. You must output only the fractional part if the integer part is 0.

Sample Input 1:
5
2/5 4/15 1/30 -2/60 8/3
Sample Output 1:
3 1/3
Sample Input 2:
2
4/3 2/3
Sample Output 2:
2
Sample Input 3:
3
1/3 -1/6 1/8
Sample Output 3:
7/24

AC代码

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath> 
using namespace std;
typedef long long ll;

void change(string str, ll &n, ll &d){ //获得分子与分母
	int i = 0;
	if(str[i] == '-') i = 1;
	while(str[i] != '/'){
		n = n * 10 + str[i] - '0';
		i++;
	}
	if(str[0] == '-') n = -n;
	for(++i; i < str.size(); i++)
		d = d * 10 + str[i] - '0';
}

ll gcd(ll a, ll b){
	return !b ? a : gcd(b, a % b);
}

void add(ll &n1, ll &d1, ll n2, ll d2){
	n1 = n1 * d2 + n2 * d1;
	d1 = d1 * d2;
	ll c = gcd(abs(n1), d1);
	d1 /= c;
	n1 /= c;
}

int main(){ 
	int m;
	string str;
	ll n1 = 0, d1 = 0;
	cin>>m>>str;
	change(str, n1, d1);
	for(int i = 1; i < m; i++){
		ll n2 = 0, d2 = 0;
		cin>>str;
		change(str, n2, d2);
		add(n1, d1, n2, d2);
		//cout<<n1<<" "<<d1<<endl;

	}
	int integer = n1 / d1;
	n1 = n1 % d1;
	if(n1 == 0 && integer == 0) cout<<"0";
	if(integer){
		cout<<integer;
		if(n1) cout<<" ";
	} 
	if(n1) cout<<n1<<"/"<<d1;
	return 0;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值