0
点赞
收藏
分享

微信扫一扫

PAT 7-35 有理数均值

杰森wang 2022-04-24 阅读 80
c++

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
int yuefeng(int *fz,int *fm)
{

	if(*fz==0)
	{
		*fm=1;
	}
    
	int fu=1;
    if(*fz<0) 
    {
        fu=-1;
        *fz=-*fz;
    }
    for(int i=2;i<=*fz;i=i+1)
	{
		if(*fz%i==0&&*fm%i==0)
		{
			*fz=*fz/i;
			*fm=*fm/i;
			i=1;
		}
	}
    *fz=fu*(*fz);
	return 0;
}
int add(int *a1,int *b1,int *a2,int *b2)
{
	int fz,fm,fz1=*a1,fm1=*b1,fz2=*a2,fm2=*b2;
	fm=fm1*fm2;
	fz=fz1*fm2+fz2*fm1;
	yuefeng(&fz,&fm);
    *a1=fz;
    *b1=fm;
    return 0;
}
int main()
{
	int fz=0,fm=1,fz1[100],fm1[100],N,i;
	scanf("%d",&N);
	
	scanf("%d/%d",&fz1[0],&fm1[0]);
    add(&fz,&fm,&fz1[0],&fm1[0]);
	for(i=1;i<N;i++)
	{
		scanf(" %d/%d",&fz1[i],&fm1[i]);
        add(&fz,&fm,&fz1[i],&fm1[i]);
	}

    fm=fm*N;
	yuefeng(&fz,&fm);
    
    if(fm==1)
		printf("%d\n",fz);
	else
		printf("%d/%d\n",fz,fm);
	return 0;
}
举报

相关推荐

0 条评论