本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

输入格式:

输入第一行给出一个正整数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

思路:

按照正常方法计算,每次读入一个分数,与上一个进行通分相加操作,然后将整数提出,操作后进行约分,化为最简式。

One Possible Answer:

#include<stdio.h>
#include <math.h>
int M(int a,int a1) {int c, m, n;m = fmax(a, a1);n = fmin(a, a1);while (n != 0) {c = m % n;m = n;n = c;}return m;
}//辗转相除法,返回最大公因数
int main(void) {int n, sum = 0;int a, b;//a表示分子b表示分母scanf("%d", &n);for (int i = 1; i <= n; ++i) {//n次,每次读一个分数int a1, b1;scanf("%d/%d", &a1, &b1);sum += a1 / b1;a1 = a1 % b1;//提出整数部分if (i == 1) {a = a1, b = b1;//第一次时初始化} else {int m = b * b1 / M(b, b1);//通过最大公因数找到最小公倍数a = a * (m / b) + a1 * (m / b1);b = m;sum += a / b;a = a % b;//通分计算}while (1) {int l = M(a, b);if (l == 1) {break;}a /= l;b /= l;}//while循环约分分子分母使其最简,每次都要操作避免数据溢出}if (sum == 0) {if (a == 0) {printf("0\n");} else {printf("%d/%d", a, b);}} else {printf("%d", sum);if (a == 0) {printf("\n");} else {printf(" %d/%d", a, b);}}//最后判断并输出return 0;
}

【PTA】【C语言】N个数求和相关推荐

  1. 百一测评c语言两个数求和程序,2017计算机二级C语言考前测试题与答案

    2017计算机二级C语言考前测试题与答案 三.程序修改题 下列给定程序中函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中.高位仍在高位,低位仍在低位. 例如,当s中的数为 ...

  2. N个数求和--(PTA天梯赛练习)

    N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式. 输入格式: 输入第一行给出一个正整数N(≤100) ...

  3. 1039: n个数求和 C语言

    1039: n个数求和 时间限制: 1 Sec 内存限制: 30 MB 提交: 36511 解决: 25056 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入一个整数n和n个整 ...

  4. n个数求和 java_暴力+辗转相除法——N个数求和

    题目来源 PTA 团体程序设计天梯赛-练习集 L1-009 N个数求和 (20分) 题目描述 本题的要求很简单,就是求N个数字的和.麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须 ...

  5. 7-207 孔融分梨(函数实现)7-208 sdut-C语言实验- 数列求和2

    目录 7-207 孔融分梨(函数实现) 7-208 sdut-C语言实验- 数列求和2 7-207 孔融分梨(函数实现) 分数 10 全屏浏览题目 切换布局 作者 lsr 单位 枣庄学院 孔融没有兄弟 ...

  6. 用c语言编写两整数乘积,c语言两个数相乘求积 c语言输入两个整数求乘积

    C语言中求两数相乘的程序? 思路:double类型的范围: -1.7*10(-308)-1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算. 参考代码: #inclu ...

  7. L1-009. N个数求和

    L1-009. N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和.麻烦的是,这些 ...

  8. c语言三个数按大小排列怎么编程,C语言三个数排列大小的实现方法

    这个题简单,也有很多的方法,在这里我想用数学的方法解决排序问题.ps:本人是个学渣,程序写的不好,欢迎各位大神指点帮助. 梳理思路: 以1 2 3为例 先考虑我们所有的可能输入类型(这里不一一列举): ...

  9. 0066-若干个数求和问题

    题目 若干个数求和问题 难度级别:A: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 输入若干个整数(不会超过 10000 个),输出它们的和 ...

  10. 1081 n个数求和 (多实例测试)

    n个数求和 (多实例测试) 题目描述 求n个整数的和. 输入 输入第一行是一个整数T,表示有T组测试实例: 每组输入包括两行: 第一行一个数n表示接下来会有n个整数: 第二行空格隔开的n个数. 输出 ...

最新文章

  1. 看到如此详细的Java内部类,我泪目了
  2. 1059 Prime Factors (25 分)【难度: 一般 / 知识点: 分解质因子 】
  3. AAAI论文首发:几何驱动的自监督的人体3D姿态估计方法
  4. openstack 重启mysql_突然断电导致mariadb数据库无法启动(openstack 命令无法使用)...
  5. java office在线编辑_国外10个最受欢迎的 Java 开发的 CMS 系统
  6. React开发(145):目录规范:
  7. python 3d游戏记录路径_基于osg的python三维程序开发(五)------沿路径运动
  8. Spark SQL将rdd转换为数据集-以编程方式指定模式(Programmatically Specifying the Schema)
  9. C语言入门了解篇—C语言编译流程
  10. ansys15.0安装教程
  11. 农场派对(party)(信息学奥赛一本通 1497)
  12. 牛客赛47 DongDong认亲戚(并查集+map)
  13. iOS企业ipa(299)证书制作、打包发布全流程(亲测,成功)
  14. marshmallow数据校验的神器(python)
  15. 3、核对单《数据收集工具与技术》
  16. 【渝粤教育】广东开放大学 公共经济学 形成性考核 (33)
  17. js的初识及数据类型简介
  18. 佛系老年学量化——从实现指标开始(DKX)
  19. Pycharm 2017.3 最新的激活码
  20. Bootstrap重抽样方法

热门文章

  1. docx和doc有什么区别
  2. yolov5的anchor详解
  3. 如何去掉CSDN中图片水印
  4. Windows下的pixhawk环境搭建
  5. HTML5期末大作业:旅游酒店网站设计——旅游酒店服务预订(1页) web网页设计—— 出游
  6. [项目管理入门系列] 师傅领进门-------项目运作的一般流程(三)
  7. Re:if java for
  8. 解决error C2059: 语法错误:“::”问题
  9. HTML DOM nextSibling 和nextElementSibling属性
  10. 安装elasticsearch