#include <stdio.h>
#include <stdlib.h>
int getLCM(int a,int b);//获取最小公倍数
int getGCD(int a,int b);//获取最大公约数
int main(){
int n,i,a,b;
int fz = 0;
int fm = 1;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d/%d",&a,&b);
int m = getGCD(a,b); //先化简
a = a/m;
b = b/m;
int jfm = getLCM(b,fm); //jfm即是临时分母(假分母),两个分母的最小公倍数
fz = jfm/fm*fz+jfm/b*a; //算出当前分子
int n = getGCD(fz,jfm);
fz = fz/n;
fm = jfm/n;
}
fm = fm*n;//因为要求平均值
int c = getGCD(fz,fm);
fz = fz/c;
fm = fm/c;
if(fm==1){
printf("%d",fz);
}else{
printf("%d/%d",fz,fm);
}
}
// int getGCD(int a,int b){
// int i,min,key = 1;
// if(a>=b){
// min = b;
// }else{
// min = a;
// }
// for(i=min;i>=1;i--){
// if(a%i==0&&b%i==0){
// key = i;
// break;
// }
// }
// return key;
// }
int getGCD(int a,int b){ //辗转相除法
int c = a%b;
while(a%b!=0){
c = a%b;
a = b;
b = c;
}
return b;
}
int getLCM(int a,int b){
return a*b/getGCD(a,b);
}
7-35 有理数均值 (20分)
最新推荐文章于 2023-01-02 16:20:22 发布