输入格式:

输入第一行给出一个正整数N(<=100)。随后一行按格式“a1/b1 a2/b2 ...”给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

输出格式:

输出上述数字和的最简形式 —— 即将结果写成“整数部分 分数部分”,其中分数部分写成“分子/分母”,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

输入样例1:

5
2/5 4/15 1/30 -2/60 8/3

输出样例1:

3 1/3

输入样例2:

2
4/3 2/3

输出样例2:

2

输入样例3:

3
1/3 -1/6 1/8

输出样例3:

7/24

分析:先根据分数加法的公式累加,后分离出整数部分和分数部分~
分子和分母都在长整型内,所以不能用int存储,否则有一个测试点不通过~
一开始一直是浮点错误,按理来说应该是出现了/0或者%0的情况,找了半天也不知道错在哪里,后来注意到应该在累加的时候考虑是否会超出long long的范围,所以在累加每一步之前进行分子分母的约分处理,然后就AC了~

以及:abs()在stdlib.h头文件里面~
应该还要考虑整数和小数部分都为0时候输出0的情况,但是测试用例中不涉及,所以如果没有最后两句也是可以AC的~

#include <cstdio>
#include <cstdlib>
using namespace std;
long long gcd(long long a, long long b) {return b == 0 ? a : gcd(b, a % b);}
int main() {long long n, a, b, suma = 0, sumb = 1, gcdvalue;scanf("%lld", &n);for(int i = 0; i < n; i++) {scanf("%lld/%lld", &a, &b);gcdvalue = (suma == 0 || sumb == 0) ? 1 : gcd(abs(suma), abs(sumb));sumb = sumb / gcdvalue;suma = suma / gcdvalue;gcdvalue = (a == 0 || b == 0) ? 1 : gcd(abs(a), abs(b));a = a / gcdvalue;b = b / gcdvalue;suma = a * sumb + suma * b;sumb = b * sumb;}long long integer = suma / sumb;suma = suma - (sumb * integer);gcdvalue = (suma == 0 || sumb == 0) ? 1 : gcd(abs(suma), abs(sumb));suma = suma / gcdvalue;sumb = sumb / gcdvalue;if(integer != 0) {printf("%lld", integer);if(suma != 0)printf(" ");}if(suma != 0) {printf("%lld/%lld", suma, sumb);}if(integer == 0 && suma == 0)printf("0");return 0;
}

L1-009. N个数求和-PAT团体程序设计天梯赛GPLT相关推荐

  1. L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...

  2. L1-079 天梯赛的善良 (20 分)-PAT 团体程序设计天梯赛 GPLT

    天梯赛是个善良的比赛.善良的命题组希望将题目难度控制在一个范围内,使得每个参赛的学生都有能做出来的题目,并且最厉害的学生也要非常努力才有可能得到高分. 于是命题组首先将编程能力划分成了 106个等级( ...

  3. L3-007. 天梯地图-PAT团体程序设计天梯赛GPLT

    本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至少存在一条可达路线. 输 ...

  4. L2-013. 红色警报-PAT团体程序设计天梯赛GPLT(图的连通分量个数统计)

    战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ...

  5. L3-011 直捣黄龙 (30 分)-PAT 团体程序设计天梯赛 GPLT

    本题是一部战争大片 -- 你需要从己方大本营出发,一路攻城略地杀到敌方大本营.首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营.当这样的路径不唯一时,要求选择可以沿途解放最多城镇 ...

  6. L2-022 重排链表-PAT团体程序设计天梯赛GPLT

    给定一个单链表 L~1~→L~2~→-→L~n-1~→L~n~,请编写程序将链表重新排列为 L~n~→L~1~→L~n-1~→L~2~→-.例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5 ...

  7. L1-050 倒数第N个字符串-PAT团体程序设计天梯赛GPLT

    给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增.例如当 L 为 3 时,序列为 { aaa, aab, aac, . ...

  8. L1-016. 查验身份证-PAT团体程序设计天梯赛GPLT

    一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...

  9. L3-020 至多删三个字符 (30 分)-PAT 团体程序设计天梯赛 GPLT

    给定一个全部由小写英文字母组成的字符串,允许你至多删掉其中 3 个字符,结果可能有多少种不同的字符串? 输入格式: 输入在一行中给出全部由小写英文字母组成的.长度在区间 [4, 106] 内的字符串. ...

最新文章

  1. 吊打Magic Leap,微软HoloLens 2不只为炫技
  2. android自定义抽奖,Android自定义view制作抽奖转盘
  3. 判断出栈序列是否合法(c语言实现)
  4. python爬取豆瓣电影并分析_Python爬取豆瓣电影的短评数据并进行词云分析处理
  5. 轻量级的web框架[Nancy On .Net Core Docker]
  6. seo伪原创工具_文章伪原创工具哪个好用(伪原创工具有哪些)
  7. LeetCode 第 28 场双周赛(505/2144,前23.6%)
  8. 读取打印TFRecord格式数据
  9. 科大讯飞回应同传造假:人机耦合才是未来发展之道
  10. linux shell读取配置文件中的内容
  11. linux报文高速捕获技术对比--napi/libpcap/afpacket/pfring/dpdk/xdp
  12. 190413每日一句
  13. 如何本地加载live2d模型 离线方式加载看板娘
  14. element-ui对话框fullscreen.lock使用
  15. 一文读懂图像局部特征点检测算法!
  16. 浅析高速公路网络数据集制作
  17. 如何在html表格中添加超链接,excel怎么将工作表制作成网页 excel如何加入网页超链接...
  18. shell 编程空格注意事项
  19. PsExec用法及远程操控执行脚本举例
  20. [小说]魔王冢(48)诏告

热门文章

  1. Erlang 基础学习笔记
  2. CentOS下使用SVN实现多项目管理配置方案
  3. Beta冲刺——day6
  4. 你知道大数据强大在哪里!!!你永远也不会猜到
  5. 多线程设计模式 - Future模式
  6. 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量...
  7. selenium常用获取元素点
  8. 【javascript】 的严格模式 详解
  9. RHEL 5 rpm包安装bind
  10. 美国商务部发布软件物料清单 (SBOM) 的最小元素(上)