立志用最少的代码做最高效的表达


PAT甲级最优题解——>传送门


Given N rational numbers in the form numerator/denominator, you are supposed to calculate their sum.

Input Specification:
Each input file contains one test case. Each case starts with a positive integer N (≤100), followed in the next line N rational numbers a1/b1 a2/b2 … where all the numerators and denominators are in the range of long int. If there is a negative number, then the sign must appear in front of the numerator.

Output Specification:
For each test case, output the sum in the simplest form integer numerator/denominator where integer is the integer part of the sum, numerator < denominator, and the numerator and the denominator have no common factor. You must output only the fractional part if the integer part is 0.

Sample Input 1:
5
2/5 4/15 1/30 -2/60 8/3
Sample Output 1:
3 1/3

Sample Input 2:
2
4/3 2/3
Sample Output 2:
2

Sample Input 3:
3
1/3 -1/6 1/8
Sample Output 3:
7/24


题意:求分数和。分三种情况输出,分别为样例的三种情况。

分析:题中最大数不超过int,也就是2322^{32}232,考虑无优化的分数相加方法,即分母相乘分子同分后相加。分母相乘不会超过2642^{64}264,也就是不会超过long long的取值范围。 因此可以考虑采用暴力循环方式求解(20分的题应该也没啥数据结构)

具体算法逻辑见代码。

分数运算类型题常见模板:
1、采用pair存储分子和分母,初始化值为 (0, 1)
2、分母相乘,分子通分后相加, 最后利用最大公约数约分。


#include<bits/stdc++.h>
using namespace std;
using gg = long long;gg gcd(gg a, gg b) { return (b == 0 ? a : gcd(b, a%b)); }
//约分过程中无需考虑分子为0的因素。
int main() {gg N; scanf("%lld", &N);//分数初始化后, 分子是0,分母是1 pair<gg, gg>f, sum({0,1}); //一个储存分子,一个储存分母 while(N--) {scanf("%lld/%lld", &f.first, &f.second);sum.first = sum.first*f.second + sum.second*f.first;sum.second *= f.second;gg k = gcd(sum.first, sum.second);sum.first /= k;sum.second /= k; }gg k = sum.first/sum.second;sum.first %= sum.second;if(k!=0 && sum.first!=0) printf("%lld %lld/%lld", k, sum.first, sum.second);else if(k==0 && sum.first != 0) printf("%lld/%lld", sum.first, sum.second);else printf("%lld", k);return 0;
}

耗时


求赞哦~ (✪ω✪)

1081 Rational Sum (20 分)_22行代码AC相关推荐

  1. 【简洁代码】1053 住房空置率 (20分)_22行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内 ...

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

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

  3. 1094 谷歌的招聘 (20分)_25行代码AC

    立志用最少的代码做更高效的表达 PAT乙级最优题解-->传送门 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com ...

  4. 【测试点分析】1067 试密码 (20分)_20行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 当你试图登录某个系统却忘了密码时,系统一般只会允许你尝试有限多次,当超出允许次数时,账号就会被锁死.本题就请你实 ...

  5. 1011 World Cup Betting (20 分)_14行代码AC

    立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 With the 2010 FIFA World Cup running, football fans the world ove ...

  6. 1073 多选题常见计分法 (20 分)_66行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 批改多选题是比较麻烦的事情,有很多不同的计分方法.有一种最常见的计分方法是:如果考生选择了部分正确选项,并且没有选择任何错误选项, ...

  7. 【简便解法】1077 互评成绩计算 (20分)_32行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个 ...

  8. 【简便解法】1074 宇宙无敌加法器 (20分)_40行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都 ...

  9. 【测试点分析】1072 开学寄语 (20分)_42行代码AC

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad ...

最新文章

  1. 超级干货丨优美的课程笔记,吴恩达点赞的深度学习课程信息图
  2. python学习笔记之运算符
  3. 组合破解windows域账号
  4. Python集合和函数
  5. centos踩坑指南之安装composer
  6. [算法]浅谈求n范围以内的质数(素数)
  7. Linux C语言写的超级简单端口扫描器
  8. VisibilityAwareImageButton.setVisibility can only be called from within the same library group (grou
  9. android如何虚标内存,答疑 | 手机运存明明是6GB,但实际可用才3.5GB?是虚标还是什么?...
  10. R语言使用diag函数生成一个N行N列的单位矩阵
  11. uni-app cli创建项目打包并配置多环境读取配置文件信息
  12. 简述计算机组装的具体流程,简述计算机的组装流程??
  13. 基于51 手机遥控的蓝牙小车(HC-05)
  14. java(Springboot) excel模板下载、导入
  15. 对于dpc的初步理解
  16. 鸟哥的linux私房菜第七章
  17. 做单:第十章 洗脑的成交
  18. hbase定义一个列族
  19. 极光大数据:2017年10月主流共享单车app运营报告(附下载)
  20. 旗舰手机2021的破局关键:抓住细分市场?

热门文章

  1. ElasticSearch探索之路(六)实战:环境搭建、REST、CRUD、Search
  2. 去除有序数组/链表的重复元素--双指针原地修改
  3. 音视频技术下一个风口在哪里——LiveVideoStackCon 音视频技术大会 2022 上海站演讲剧透...
  4. 微软或在开发自己的 CPU、TikTok 发布电视版本、索尼撤下《赛博朋克2077》并为玩家退款|Decode the Week...
  5. 周小鹏:努力让FPGA支持更多开源库和框架
  6. Go Time常用语法
  7. JVM之本地方法栈Naitve Method Stack
  8. 解密HLS中的AES加密
  9. Shell脚本中字符串的一些常用操作
  10. Google开源的AR/VR开发库Lullaby