PAT-A1081. Rational Sum (20)
来源:互联网 发布:彩影软件 arp 编辑:程序博客网 时间:2024/06/14 00:26
分数处理,简化,输出要会。
#include <iostream>#include <cstring>#include <cstdio>#include <cstdlib>#include <cmath>using namespace std;#define MAX 100+10struct Fraction{long long up;long long down;}fraction[MAX], sum;int gcd(int a, int b){if (b == 0)return a;elsereturn gcd(b, a%b);}void reduction(Fraction &f){if (f.down < 0){f.down *= -1;f.up *= -1;}if (f.up == 0)f.down = 1;int d = gcd(abs(f.up), f.down);f.up /= d;f.down /= d;return;}Fraction add(Fraction f1, Fraction f2){Fraction r;r.down = f1.down * f2.down;r.up = f1.up*f2.down + f2.up*f1.down;reduction(r);return r;}int main(){//freopen("in.txt", "r", stdin);//freopen("out.txt", "w", stdout);int N = 0;scanf("%d", &N);for (int i = 0; i < N; i++){scanf("%lld/%lld", &fraction[i].up, &fraction[i].down);reduction(fraction[i]);}sum = fraction[0]; for (int i = 1; i < N; i++){sum = add(sum, fraction[i]);}if (sum.down == 1)printf("%lld", sum.up);else if (abs(sum.up) > sum.down)printf("%lld %lld/%lld", sum.up/sum.down, (abs(sum.up))%sum.down, sum.down);elseprintf("%lld/%lld", sum.up, sum.down);return 0;}
0 0
- PAT-A1081. Rational Sum (20)
- pat-a1081. Rational Sum (20)
- PAT A1081. Rational Sum (20)
- PAT A1081 rational sum (20)
- PAT A1081. Rational Sum (20)
- PAT A1081. Rational Sum
- 数学问题--PAT.A1081. Rational Sum
- 分数计算--PAT.A1081. Rational Arithmetic
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum(20)
- 【PAT】1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- 【PAT】1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- PAT 1081. Rational Sum (20)
- 1081. Rational Sum (20) PAT
- android日常开发总结技术60条
- Y460安装桌面导航
- typedef之函数
- 基于Spark的异构分布式深度学习平台
- BZOJ2756/SCOI2012 奇怪的游戏
- PAT-A1081. Rational Sum (20)
- 普里姆算法与迪杰斯特拉算法
- Java复习(1)-字符串,switch,数组
- 提高 Android 代码质量的4个工具
- Java标识符命名。。。
- 蓝桥杯-十六进制转八进制
- Emmet使用技巧
- POJ 2723 Get Luffy Out(2-SAT)
- PAT-A1013. 数素数 (20)