PAT-A 1081. Rational Sum (20)
来源:互联网 发布:android股票k线图源码 编辑:程序博客网 时间:2024/06/07 16:42
题目链接在此。
典型的分数加法运算。
分数的四则运算相关可以看这里。
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;struct fraction{ long long up, down;}num[105];//求两个数的最大公约数long long gcd(long long a, long long b){ if(b == 0) return a; else gcd(b,a%b);} //化简一个分数 fraction reduction(fraction f){ //由于题目已经保证负号一定出现在分子,所以下面第一个if可以省略; //由于在输出的时候判断了分子为0 的情况,所以第二个if可以省略 /* if(f.down < 0){ //分母为负数 f.up = -f.up; //分子分母取为相反数 f.down = -f.down; } if(f.up == 0){ //分子为零 f.down = 1; }else{ //分母不为零,进行约分 long long d = gcd(abs(f.up), abs(f.down)); //求分数f的分子分母绝对值的最大公约数 ,记得是绝对值 f.up /= d; //分子除以最大公约数 f.down /= d; //分母除以最大公约数 }*/ long long d = gcd(abs(f.up), abs(f.down)); //求分数f的分子分母的最大公约数 f.up /= d; //分子除以最大公约数 f.down /= d; //分母除以最大公约数 return f; }//分数加法fraction add(fraction a, fraction b){ fraction res; res.up = a.up*b.down + b.up*a.down; res.down = a.down*b.down; return reduction(res);} int main(){ int n; scanf("%d",&n); fraction res; //用来保存结果 res.up = 0, res.down = 1; //初始化res for(int i = 0; i < n; i++){ scanf("%lld/%lld",&num[i].up, &num[i].down); res = add(res,num[i]); } //按要求输出 if(res.up == 0){ //如果分子为0 printf("0\n"); //那么结果为0,直接输出0即可 }else if(res.down == 1){ //如果分母为1 printf("%lld\n",res.up); //直接输出分母即可 }else if(res.up > res.down){ //分子大于分母,此时是一个带分数 printf("%lld ",res.up/res.down); //输出带分数的整数部分 printf("%lld/%lld\n",res.up%res.down, res.down); //带分数的分数部分 } else{ //真分数 printf("%lld/%lld\n",res.up,res.down); //正常输出 } return 0;}
0 0
- PAT A 1081. Rational Sum (20)
- PAT-A 1081. Rational Sum (20)
- PAT-A-1081. Rational Sum (20)
- PAT-A 1081.Rational Sum
- 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
- PAT 1081. Rational Sum
- 【PAT】1081. Rational Sum
- PAT--1081. Rational Sum
- ZJU-PAT 1081. Rational Sum (20)
- C语言异常处理
- OpenGL ES总结(六)OpenGL ES中EGL
- 如何优雅的为你的app添加启动引导页
- 关于fopen函数中的打开模式(以写的方式总是打开失败)
- Linux下which、whereis、locate、find命令的区别
- PAT-A 1081. Rational Sum (20)
- openmp简单介绍以及使用实例(整理)
- python安装numpy、scipy和matplotlib等whl包的方法
- find指令——Linux
- kmalloc,vmalloc,malloc区别
- HTML+CSS基础入门-第九天(CSS-使用方式)
- QT之界面实现技巧
- servlet学习Demo
- 彻底解决_OBJC_CLASS_$_某文件名", referenced from:问题