#include<stdio.h>
struct node{
int fenzi;
int fenmu;
};
void huajian(int &fenzi,int &fenmu){
for(int i=fenzi;i>1;i--){
if(fenzi%i==0&&fenmu%i==0){
fenzi=fenzi/i;
fenmu=fenmu/i;
break;//运行超时是因为没加break;从大到小找,第一个找到的一定是最大公约数,找到就可以退出了
}
}
}
int main(){
int n,i,j;
scanf("%d",&n);
struct node a[110],sum;
for(i=0;i<n;i++){//输入每个分数
scanf("%d/%d",&a[i].fenzi,&a[i].fenmu);
// huajian(a[i].fenzi,a[i].fenmu);
}
sum.fenmu=1;sum.fenzi=0;
for(i=0;i<n;i++){//挨个加到sum中,并化简。
sum.fenzi=sum.fenzi*a[i].fenmu+a[i].fenzi*sum.fenmu;
sum.fenmu=sum.fenmu*a[i].fenmu;
huajian(sum.fenzi,sum.fenmu);
}
sum.fenmu*=n;
huajian(sum.fenzi,sum.fenmu);
if(sum.fenmu==1){
printf("%d",sum.fenzi);
}else if(sum.fenzi==0){
printf("0");
}
else{
printf("%d/%d",sum.fenzi,sum.fenmu);
}
}
7-35 有理数均值 (20分)
最新推荐文章于 2021-05-23 13:37:40 发布