PTA n个分数相加
本题的要求很简单,就是求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
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;long long gcd(long long a,long long b)//求最大公约数
{if(a==0)return 0;elsereturn (b==0)?a:gcd(b,a%b);
}int main()
{int n;cin>>n;long long lcp,a,b,c,d;scanf("%lld/%lld",&a,&b);int t0=gcd(a,b);if(a){a/=t0;b/=t0;}int i=1;while(i<n){scanf("%lld/%lld",&c,&d);lcp=b/gcd(b,d)*d;a=a*lcp/b+c*lcp/d;b=lcp;int t0=gcd(a,b);if(t0!=0){a=a/t0;b=b/t0;} i++;}if(a&&a/b==0)printf("%lld/%lld\n",a%b,b);else if(a%b==0) printf("%lld\n",a/b);elseprintf("%lld %lld/%lld\n",a/b,a%b,b);return 0;
}
PTA n个分数相加相关推荐
- 【C++实验】类和对象(两个分数相加并且化简)
类和对象进一步讨论 面向对象程序设计中的几个名词: st1是对象 display()是方法 st1.dispaly()是消息 构造函数:对类的成员进行初始化(为对象分配内存) 带参数/使用默认参数的构 ...
- c语言结构体求分数和,C语言 定义一个表示分数的结构体,并求两个分数相加之和...
满意答案 正义使者_AYY 2014.08.20 采纳率:53% 等级:8 已帮助:711人 //结构定义中包含两个成员,分子和分母 struct fraction { int up, down ...
- 分数在c语言程序中怎么输入,如何在c语言中实现分数相加,以分数形式输出,并化为最简...
完整的C程序: #include "stdio.h" /* 分数结构 */ typedef struct { int numerator;/* 分子 */ int denomina ...
- C语言分数相加并将最后结果化为最简分式(新手程序!!!)
[问题描述]输入两个分数,对两个分数相加求和,要求和为最简分式.(两个分数为正数) [输入形式]3/24,5/36 [输出形式]19/72 [样例输入]1/7,4/21 [样例输出]1/3 源代码如下 ...
- C++面向对象程序设计习题1:分数相加
C++面向对象程序设计习题1:分数相加 自从学习了C++面向对象编程相关基础语法后,苦于没有相应的习题来练习,偶然遇到了大佬华师数据学院·王嘉宁分享的50道习题,比较基础,但是确实会给我这样的初学者一 ...
- 【我与bug那些事】Vue 点击选项(有相应分数)实现分数相加【思路】
点击选项(有相应分数)实现分数相加[思路] test 里面的da 为 相应分数~forEach 因为是要实现数值发生变化时,在页面上DOM同步更新~所以可能会用到计算属性
- PAT甲级 1081 Rational Sum 分数相加的和
代码如下: //求分数相加的和 #include<iostream> #include<stdio.h> #include<math.h> using namesp ...
- 1. 定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形势表示。即24/36表示成2/3的形式,并提供public成员函数实现如下功能: 2. 两个分数相加,
定义分数类Rational,要求在private部分用整数表示分子和分母,分子和分母以简化形势表示.即24/36表示成2/3的形式,并提供public成员函数实现如下功能: 两个分数相加,结果表示为简 ...
- C语言程序设计-现代方法 第二版 第3.2.3小节 分数相加
第3.2.3小节 分数相加.举例说明scanf函数的模式匹配能力 ,本例程实现两个分数相加 //This is a comment //Author:King //Time:2020/12/4 //R ...
最新文章
- SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示
- 关键词与关键词之间的相关度计算
- Google Chrome 调试JS利器
- Java黑皮书课后题第8章:*8.26(行排序)用下面的方法实现一个二维数组中的行排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
- 第十章 某些算法的分治法解释
- halcon Bit图位像素处理算子,持续更新
- 中位数及带权中位数问题(转)
- bzoj千题计划174:bzoj1800: [Ahoi2009]fly 飞行棋
- 改2字节将Win XP Home变成Pro?!(zz)
- NameNode DataNode
- android c callstack,[MTK] 如何在android native code 打callstack
- 计算机应用研究英文稿,英文文摘要编写要求
- 查看计算机软件配置,最齐全的查看电脑配置指令集锦 查看电脑配置软件推荐【图文】...
- Qt编写自定义控件68-IP地址输入框
- excel公式编辑器_七款编辑器/笔记工具推荐
- Burg法求解AR(p)模型参数(一)自回归模型
- 瑞芯微RK3328硬件设计指南
- [教你做小游戏] 《五子棋》怎么判断输赢?你能5分钟交出代码吗?
- 人机对战之取火柴游戏
- Azure BareMetal 裸金属