题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1081
主要熟悉long long定义成ll,取最大公约数的方法
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
for(int t;t=b;b=a%b,a=t);
return a;
}
ll aa,bb;
int main(){
ll a,b,g;
int n;
aa=0,bb=1;
scanf("%d",&n);
while(n--){
scanf("%lld/%lld",&a,&b);
aa=aa*b+bb*a;
bb=bb*b;
g=gcd(labs(aa),labs(bb));
aa/=g;
bb/=g;
}
if(aa==0){
printf("0");
}
else{
if(aa/bb && aa%bb)printf("%lld %lld/%lld\n",aa/bb,aa%bb,bb);
else if(aa/bb){
printf("%lld\n",aa/bb);
}
else if(aa%bb){
printf("%lld/%lld\n",aa,bb);
}
}
return 0;
}

本文提供了一个解决PAT-A 1081分数加法问题的C++实现示例,通过使用long long类型来处理大整数运算,并实现了一个gcd函数用于计算两个数的最大公约数。
1492

被折叠的 条评论
为什么被折叠?



