题目详情 - L1-009 N个数求和 (pintia.cn)
题意:
思路:
首先我们需要知道约分小技巧:分子分母同除gcd就行
这样我们边求和边约分,然后把整数和分数分离开就好了
坑点:
当分母为0,只需要输出整数就好了(这个样例给了提示)
当分离之前的假分数的分母为0,就输出0就好了(这个没有提示),这个咋想到的,我也不知道qwq,总之就是各种想不到坑点
当遇到除法时,需要注意处理一下分母为0,分子为0,除不尽这三种情况
Code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
int a,b,c,d,n,ans=0;
signed main(){
//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
scanf("%lld",&n);
scanf("%lld/%lld",&a,&b);
for(int i=1;i<=n-1;i++){
scanf("%lld/%lld",&c,&d);
a=a*d+b*c,b=b*d;
int ta=a,tb=b;
a/=__gcd(ta,tb),b/=__gcd(ta,tb);
}
int s,ansa,ansb;
s=a/b,ansa=a%b,ansb=b;
if(s==0&&a!=0) printf("%lld/%lld",ansa,ansb);
else if(ansa!=0) printf("%lld %lld/%lld",s,ansa,ansb);
else printf("%lld\n",s);
return 0;
}