解题思路:通分,相加,约分求解
#include#include using namespace std; int n, up, down, sumup, sumdown = 1;//需要对分母进行初始化 char c; int gcd(int a,int b) { return b ? gcd(b, a % b) : a; } int main() { cin >> n; while(n --) { cin >> up >>c >> down; sumup = sumup * down + up * sumdown;//通分 sumdown *= down; int g = abs(gcd(sumup, sumdown)); //找到最大公约数 sumup /=g; //通分 sumdown /=g; } //输出结果 if(sumup % sumdown == 0) cout << sumup/ sumdown << endl; //结果为整数时 else { if(sumup / sumdown) cout << sumup/ sumdown << " ";//当分子大于分母时 cout << sumup - sumup/sumdown * sumdown<< '/' << sumdown << endl; } return 0; }



