1081. Rational Sum 解析

来源:互联网 发布:java项目有红色感叹号 编辑:程序博客网 时间:2024/06/18 15:17

分数的求和,还是规成求最大公因数的问题。

注意讨论各种情况,整数,真分数,假分数。

#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;}


0 0
原创粉丝点击