1081. Rational Sum (20)解题报告
来源:互联网 发布:网络文明主题班会教案 编辑:程序博客网 时间:2024/06/03 16:49
不要使用abs函数,因为它的形参是int类型。
#define _CRT_SECURE_NO_WARNINGS#include <cstdio>#include <cstdlib>#include <cmath>struct RationalNum { long long numerator, denominator;};RationalNum add(RationalNum n1, RationalNum n2);long long gcd(long long n1, long long n2);void printsum(RationalNum n);int main(void) { RationalNum *arr, sum; int n, i; scanf("%d", &n); arr = new RationalNum[n]; for (i = 0; i < n; i++) { scanf("%lld/%lld", &arr[i].numerator, &arr[i].denominator); } sum = arr[0]; for (i = 1; i < n; i++) { sum = add(sum, arr[i]); } printsum(sum); delete[] arr; return 0;}RationalNum add(RationalNum n1, RationalNum n2) { RationalNum sum; long long factor1, factor2, factor3; factor1 = gcd(n1.denominator, n2.denominator); factor2 = n1.denominator / factor1; factor3 = n2.denominator / factor1; sum.denominator = factor1 * factor2 * factor3; n1.numerator *= factor3; n2.numerator *= factor2; sum.numerator = n1.numerator + n2.numerator; factor1 = gcd(sum.numerator, sum.denominator); sum.numerator /= factor1; sum.denominator /= factor1; if (!sum.numerator) { sum.numerator = 0; sum.denominator = 1; } return sum;}long long gcd(long long n1, long long n2) { long long n3; if (n1 && n2) { if (n1 < 0) { n1 = -n1; } if (n2 < 0) { n2 = -n2; } while (n1 % n2) { n3 = n1 % n2; n1 = n2; n2 = n3; } return n2; } else { return 1; }}void printsum(RationalNum n) { long long integer, numerator, denominator, factor, character; factor = gcd(n.numerator, n.denominator); denominator = n.denominator / factor; numerator = n.numerator / factor; if (numerator >= 0) { character = 1; } else { character = -1; numerator = -numerator; } integer = numerator / denominator; numerator %= denominator; if (integer) { integer *= character; if (numerator) { printf("%lld %lld/%lld\n", integer, numerator, denominator); } else { printf("%lld\n", integer); } } else { numerator *= character; if (numerator) { printf("%lld/%lld\n", numerator, denominator); } else { printf("%lld\n", 0); } } return;}
0 0
- 1081. Rational Sum (20)解题报告
- 1088. Rational Arithmetic (20)解题报告
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- 1081. Rational Sum (20)
- VB中windows API StretchBlt,BitBlt的应用
- 《OpenCV3编程入门》读书笔记(1) - 基础图像容器Mat
- 即兴知识点-3 myeclipse中,项目上有个叉报错,文件没有错误,或者没有jre包 解决那别发 注释乱码问题
- Java设计模式之一——单例模式
- POJ 1518 Problem Bee 笔记
- 1081. Rational Sum (20)解题报告
- 任务执行(一)
- video4linux 讲解
- linux搭建java服务器,实现远程访问
- vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 文章标题
- 23种设计模式之策略模式
- mongoDB(基本使用)
- Eclipse代码提示失效[Alt+/]