L1-009. N个数求和

来源:互联网 发布:淘宝天猫内部券公众号 编辑:程序博客网 时间:2024/06/05 22:16
#include<iostream>#include<cstdio>using namespace std;//数学//扩展欧几里得求最小公倍数最大公约数typedef long long ll;void gcd(ll a,ll b,ll& d,ll&x,ll&y){    if(!b)        d=a,x=1,y=0;    else{        gcd(b,a%b,d,y,x);        y-=x*(a/b);        return;    }} int main(){    ll d,x,y,a=0,b=1,a1,b1,N;    cin>>N;    for(int i=0;i<N;i++){        scanf("%lld/%lld",&a1,&b1);        if(a1==0)continue;        gcd(b,b1,d,x,y);        ll lcp=b/d*b1;        a=a*lcp/b+a1*lcp/b1;        b=lcp;        gcd(a,b,d,x,y);        a/=d,b/=d;    }    if(a/b!=0&&a%b!=0){        printf("%lld %lld/%lld",a/b,a%b,b);    }    else if(a%b==0){        cout<<a/b<<endl;    }    else{        cout<<a<<"/"<<b<<endl;    }    return 0;} 
0 0