PAT A1081 Rational Sum

  • 想不起来最小公倍数咋求了,可是我为啥要用最小公倍数通分呢。。。
  • 最后一个测试点是结果=0的情况
  • 最好全程使用long long,尤其注意输入的时候,如果用%d输给long long,会被符号扩展,负数挂掉
  • 求gcd应该是用两个绝对值,否则可能求出来负数,进而可能使约分后分子上的负号跑到分母上,虽然在本题中这没有影响到各测试点的结果
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <math.h>
#include <set>
#include <map>
#include <unordered_map>
#include <stack>using namespace std;struct Real{long long intpart = 0;long long nu = 0;long long de = 1;
};
vector<Real> vr;long long getgcd(long long a,long long b){while(a % b != 0){long long tmp = a % b;a = b;b = tmp;}return b;
}long long getlcm(long long a,long long b){return a / getgcd(a,b) * b;
}Real add(Real r1,Real r2){Real r;r.de = r1.de * r2.de;r.nu = r1.nu * r2.de + r2.nu * r1.de;long long gcd = getgcd(r.nu,r.de);//cout << r.nu << ' ' << r.de << ' ' << gcd << endl;r.de /= gcd;r.nu /= gcd;return r;
}#define DEBUG int main(){#ifdef DEBUGfreopen("1.txt","r",stdin);
#endifint num;cin >> num;vr.resize(num);Real ans;for(int i = 0;i < num;i ++){scanf("%lld/%lld",&vr[i].nu,&vr[i].de);ans = add(ans,vr[i]);}int sign = 0;if(ans.nu < 0){sign = -1;ans.nu = -ans.nu;}if(sign == -1) cout << '-';if(ans.nu < ans.de){if(ans.nu == 0) cout << 0;else cout << ans.nu << '/' << ans.de;}else{cout << ans.nu / ans.de;if(ans.nu % ans.de) cout << ' ' << ans.nu % ans.de << '/' << ans.de;}return 0;
}

PAT A1081 Rational Sum ——垂死病中惊坐起相关推荐

  1. 【PAT】Rational Sum

    题目描述 Given N rational numbers in the form "numerator/denominator", you are supposed to cal ...

  2. PAT甲级1081 Rational Sum:[C++题解]分数求和、辗转相除法求最大公约数、long long有一个数据溢出

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析 数据量很小,直接模拟分数加法即可,分数加法如下: ab+cd=ad+bcbd\frac{a}{b}+\frac{c}{d}=\frac ...

  3. 垂死病中惊坐起_我如何开始恢复垂死的软件团队的过程

    垂死病中惊坐起 by Victoriya Kalmanovich 由Victoriya Kalmanovich 我如何开始恢复垂死的软件团队的过程 (How I started the process ...

  4. PAT甲级1104 Sum of Number Segments:[C++题解]数段之和,测试点2爆double,请用long double!!!

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:本题题意比较简单,但是不能仅仅根据定义来算. 本题思路:统计每个数在多少个区间出现过,也就是这个数需要加多少次.共有n个数,其中第i个 ...

  5. 1081 Rational Sum (20 分) 分数加法 简单模拟

    1081 Rational Sum (20 分) Given N rational numbers in the form numerator/denominator, you are suppose ...

  6. 垂死病中惊坐起,好好锻炼来得及

    有一句话是这么说的,人如果不逼自己一把,都不知道自己有多牛逼. 以前吧,我都是觉得,我自己不牛逼,就是逼自己一把,也没有什么了不起的.所以,我基本上就是得过且过吧.看见别人成功,心里一定嫉妒,但是要我 ...

  7. 1081. Rational Sum (20)-PAT甲级真题

    Given N rational numbers in the form "numerator/denominator", you are supposed to calculat ...

  8. PAT甲级 1081 Rational Sum 分数相加的和

    代码如下: //求分数相加的和 #include<iostream> #include<stdio.h> #include<math.h> using namesp ...

  9. 1081 Rational Sum (20 分)_22行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Given N rational numbers in the form numerator/denominator, you a ...

最新文章

  1. symfony小练习-表白墙
  2. wordpress前台编辑文章_9款 WordPress 最美极简主题推荐
  3. VC++ 保存数据为音频文件(WAV)学习
  4. Asp.Net MVC中的RenderPartial 和 RenderAction 【转】
  5. BZOJ1798: [Ahoi2009]Seq 维护序列seq
  6. golang mysql curd_Go 语言操作 MySQL 之 CURD 操作
  7. Magento怎么升级?
  8. VMware中的三种网络模式-----NAT模式
  9. 进程间通信(五)—信号
  10. keil的configuration wizard配置和使用
  11. 百度网站收录批量查询 介绍百度网站收录批量查询3种方式
  12. IPv6安装及使用手册
  13. ad 新建一个componen的类_Glyphs智能母件:字体设计师的好帮手 Glyphs smart Component: a good helper font designer...
  14. 复旦python课补考_复旦学姐说:“这段科研,最终帮助我这个零经验小白拿下了量化岗实习!”...
  15. python dataframe dropna_在Python中使用熊猫在两个DataFrame之间进行值...
  16. java 2%3等于多少,Java别说取余(%)运算简单你真的会吗
  17. Axure RP 8.1下载 +汉化
  18. 2021年日历记事备忘录(A4可打印版)
  19. 正益王国春:AppCan 为HTML5移动创新与创业而生
  20. 胡歌热播剧《猎场》遭差评 “程序猿”用自然语言分析揭真相

热门文章

  1. 帧同步和状态同步笔记
  2. 第一位iPhone Hacker新作:单人之力实现自动驾驶汽车
  3. 在计算机领域的英语短语,初一英语:Unit 5Abilities重点短语汇总
  4. Python实现输入电影名字自动生成豆瓣评论词云图!
  5. Python-Django毕业设计宾馆管理信息系统(程序+Lw)
  6. 超硬核,30 张图解 HTTP 常见的面试题
  7. 程序员必学!java资料百度网盘
  8. 前端新兴十大框架!!!
  9. runtime error: member access within null pointer of type ‘MyLinkedList::ListNode‘ (solution.cpp)
  10. 【进阶指南】数据结构 - 楼兰图腾【BIT】