分数的求和,还是规成求最大公因数的问题。
注意讨论各种情况,整数,真分数,假分数。
#include <iostream>
using namespace std;
int n;
long long gcd(long long a, long long b) {
if (b == 0) return a;
else return gcd(b, a%b);
}
int main() {
cin >> n;
long long fra1, num1,fra2,num2;
cin >> fra1;
cin.get();
cin >> num1;
for (int i = 1; i < n; i++) {
cin >> fra2;
cin.get();
cin >> num2;
fra1 = fra1 * num2 + fra2 * num1;
num1 = num1*num2;
}
if (fra1 == 0) {
cout << 0 << endl;
return 0;
}
long long factor = gcd(fra1, num1);
fra1 /= factor;
num1 /= factor;
if (fra1 % num1 == 0) { //整数
cout << fra1 / num1 << endl;
}
else if (fra1 < num1) { //真分数
cout << fra1 << "/" << num1 << endl;
}
else {
long long dec = fra1 / num1;
fra1 %= num1;
cout << dec << " " << fra1 << "/" << num1 << endl;
}
return 0;
}
本文介绍了一种分数加法的算法实现,该算法能够处理包括整数、真分数及假分数在内的各种类型,并通过求最大公因数来简化分数。代码采用C++编写,详细展示了如何输入多个分数并计算其总和。
374

被折叠的 条评论
为什么被折叠?



