有理数均值,不随时化简会溢出问题,感觉自己有随时化简,但还是通过不了。

#include<stdio.h>
int main()
{ int n,i,j,k=0,m;
scanf("%d",&n);
int a[n],b[n];
for(i=0;i<n;i++)
{scanf("%d/%d",&a[i],&b[i]);}
for(i=0;i<n-1;i++)
{for(j=b[i];j>0;j++)
{if(j%b[i]==0&&j%b[i+1]==0)
{break;}
}
a[i+1]=(j/b[i])*a[i]+(j/b[i+1])*a[i+1];
b[i+1]=j;
do
{ k++;
if(a[i+1]%k==0&&b[i+1]%k==0)
{a[i+1]=a[i+1]/k;
b[i+1]=b[i+1]/k;
k=1;}
}
while(k<b[i+1]);
k=0;
}
m=n;
k=0;
do
{ k++;
if(a[i]%k==0&&m%k==0)
{a[i]=a[i]/k;
m=m/k;
k=1;}
}
while(k<m);
b[i]=b[i]*m;
if(b[i]==1)
printf("%d",a[i]);
else
printf("%d/%d",a[i],b[i]);
}

#include<stdio.h>
int main()
{ 
    int n,i,j,k=0,m;
    scanf("%d",&n);
    int a[n],b[n];
    for(i=0;i<n;i++){
        scanf("%d/%d",&a[i],&b[i]);
    }
    for(i=0;i<n-1;i++)
    {
        for(j=b[i];j>0;j++)
        {
            if(j%b[i]==0&&j%b[i+1]==0)
            {
                break;
            }
        }
        a[i+1]=(j/b[i])*a[i]+(j/b[i+1])*a[i+1];
        b[i+1]=j;
        do
        { 
            k++;
            if(a[i+1]%k==0&&b[i+1]%k==0)
            {
                a[i+1]=a[i+1]/k;
                b[i+1]=b[i+1]/k;
                k=1;
            }
        }while(k<b[i+1]);
        k=0;
    }
    m=n;
    k=0;
    do
    { 
        k++;
        if(a[i]%k==0&&m%k==0)
        {
            a[i]=a[i]/k;
            m=m/k;
            k=1;
        }
    }while(k<m);
    b[i]=b[i]*m;
    if(b[i]==1)
        printf("%d",a[i]);
    else
        printf("%d/%d",a[i],b[i]);
}