PAT甲级1081 Rational Sum (20 分)
Posted ldudxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级1081 Rational Sum (20 分)相关的知识,希望对你有一定的参考价值。
题意:
输入一个正整数N(<=100),接着输入N个由两个整数和一个/组成的分数。输出N个分数的和。
代码:
#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int a[107],b[107];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=1;i<=n;++i){
cin>>a[i];
cin.ignore();
cin>>b[i];
int t=max(1,__gcd(a[i],b[i]));
a[i]/=t;
b[i]/=t;
}
int ans=0;
for(int i=2;i<=n;++i){
int tamp=b[i-1]*b[i];
int sum=a[i]*b[i-1]+a[i-1]*b[i];
int t=__gcd(tamp,sum);
tamp/=t;
sum/=t;
ans+=sum/tamp;
sum%=tamp;
a[i]=sum;
b[i]=tamp;
}
if(ans&&a[n])
cout<<ans<<" "<<a[n]<<"/"<<b[n];
else if(ans)
cout<<ans;
else if(a[n])
cout<<a[n]<<"/"<<b[n];
else
cout<<0;
return 0;
}
以上是关于PAT甲级1081 Rational Sum (20 分)的主要内容,如果未能解决你的问题,请参考以下文章
[PAT] 1081 Rational Sum (20 分)Java
1081. Rational Sum (20)模拟——PAT (Advanced Level) Practise