c++ 输入n个分数并对他们求和并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1则直接用整数表示。如:56、103均是最简形式而36需要化简为12 31需要化简为3。分子和分母均不为0也不为负数。输入第一行是一个整数n表示分数个数1 = n = 10;接下来n行每行一个分数用pq的形式表示不含空格pq均不超过10。输出输出只有一行即最终结果的最简形式。若为分数用
#include
// 求最大公约数 int gcd(int a, int b) { if (b == 0) { return a; } return gcd(b, a % b); }
int main() { int n, sum_up = 0, sum_down = 1; // 分别记录分子和分母的和,初值分别为0和1 cin >> n; for (int i = 0; i < n; i++) { int up, down; char slash; // 用于读入'/'符号 cin >> up >> slash >> down; // 求当前分数与上一次求和结果的最大公约数 int d = gcd(up, down); // 化简当前分数 up /= d; down /= d; // 计算分子和分母的和 sum_up = sum_up * down + up * sum_down; sum_down *= down; // 求和后再次化简 d = gcd(sum_up, sum_down); sum_up /= d; sum_down /= d; } if (sum_down == 1) { // 分母为1,直接输出分子 cout << sum_up << endl; } else { // 分数形式输出 cout << sum_up << '/' << sum_down << endl; } return 0;
原文地址: https://www.cveoy.top/t/topic/ffKF 著作权归作者所有。请勿转载和采集!