1081 Rational Sum 有理数类型题处理 需再做
一、有理数结构体的几个约束
struct fraction{LL up,down;fraction(LL _up,LL _down):up(_up),down(_down){}
};
(1)如果这个有理数是0,则让分子为0,分母为1(这方便后来输出时归于整数一类)
(2)如果这个有理数是负数,则把符号给分子,分母保持为一个整数
二、化简函数要做的事
fraction reduction(fraction f){LL factor = gcd(abs(f.up),f.down);f.up /= factor;f.down /= factor;if(f.up==0)f.down = 1; return f;
}
(1)要是分母为负的,分子分母都取相反数
(2)要是分子为0,分母设置为1(这方便后来输出时归于整数一类)
(3)分子分母同除以最大公约数
三、输出函数的原则
void print(fraction f){f = reduction(f); if(f.down==1){printf("%lld",f.up);//整数 }else if(abs(f.up)>f.down){printf("%lld %lld/%lld",f.up/f.down,abs(f.up)%f.down,f.down);}else{printf("%lld/%lld",f.up,f.down);}
}
在化简之后分为整数、假分数和真分数输出。
其中假分数需要特别考虑有理数为负数的情况。让前面那个整数来承担符号,后面的分数不用(所以后面的分子加绝对值后再对分母取余)
四、即时化简
最后最后,在加法后面要记得返回化简后的值。
AC代码
#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>
#include<string>using namespace std;const int maxn = 1001;typedef long long LL;LL gcd(LL a,LL b){return b==0?a:gcd(b,a%b);
}struct fraction{LL up,down;fraction(LL _up,LL _down):up(_up),down(_down){}
};fraction reduction(fraction f){LL factor = gcd(abs(f.up),f.down);f.up /= factor;f.down /= factor;if(f.up==0)f.down = 1; return f;
}fraction Add(fraction a,fraction b){fraction c(0,1);c.up = a.up*b.down+a.down*b.up;c.down = a.down*b.down;return reduction(c);
}void print(fraction f){f = reduction(f); if(f.down==1){printf("%lld",f.up);//整数 }else if(abs(f.up)>f.down){printf("%lld %lld/%lld",f.up/f.down,abs(f.up)%f.down,f.down);}else{printf("%lld/%lld",f.up,f.down);}
}int main(){int K; scanf("%d",&K);fraction res(0,1),temp(0,1);for(int i=0;i<K;i++){string str;cin>>str;sscanf(str.c_str(),"%lld/%lld",&temp.up,&temp.down);if(temp.up!=0)res = Add(res,temp);}print(res);return 0;
}
相关文章:

LeetCode 191 Number of 1 Bits
LeetCode 191 Number of 1 Bits 解法一(较为传统都解法):使用将n不断右移,并与1想&得到1的个数;(也有使用除法/2的,明显除法的运行效率要低于位移) 时间复杂度:0(logn) 1 int hammingWeight(uint32_t …

某网站破解备忘
某网站采用了多种反破解手段,特此开贴记录分析破解过程。 工具和参考 awesome-java-crawler - 我收集的爬虫相关工具和资料 java-curl - 本人写的java HTTP库,可用来替换chrome网络后端,更方便控制底层行为,如缓存、代理、监控、修…

用XML反序列化快速完成ASP.NET配置文件
一般来说,asp.net的配置文件用web.config就可以解决,但是有时候我们希望完全用自己的形式来配置某些东西,比如希望用下面的形式来配置一个站点的所有有message。<Messages> <Message ID"ID1">Message1</Message&…

1088 Rational Arithmetic
本题需要具备有理数处理相关知识。 本次收获(错点) (1)在化简求最大公约数时,忘记给传入的分子加绝对值 (2)把除法错写成乘法,自己设计测试用例才测出orz AC代码 #include<cstdio> #include<…

CesiumLab V1.2 新功能 倾斜数据处理
一转眼又是一周的时间,我们的实验室功能又强大了。 照旧我们先放毒,放图,图,太晚了,字都敲不到一起了lod以及包围盒大雁塔实例,按楼层单体化倾斜数据处理参数设置 简单介绍一下 CesiumLab 的 Osgb倾斜数据转…

参加海峡两岸城市地理信息系统论坛2010 年会(一张图、规划信息化和空间句法的碎碎念)...
上周末去清华建筑学院开了个会,叫做海峡两岸城市地理信息系统论坛2010 年会,主题很大,但是内容比较集中一些,就是围绕着GIS与城市规划。一天下来听了20个报告,挺佩服主办方的时间控制,这么密集的报告&#…

hdu 2087 剪花布条
http://acm.hdu.edu.cn/showproblem.php?pid2087 水题,注意细节就可以了。 代码如下: #include<iostream> #include<string>using namespace std;int main() {string s1,s2;while(cin>>s1&&s1!"#"){cin>>s2;…

感知机模拟或门的实现:权重和阈值的设置
def orGate(x1, x2):w1, w2, theta 0.5, 0.5, 0.4tmp x1 * w1 x2 * w2if tmp < theta:return 0elif tmp > theta:return 1print(orGate(1, 1)) print(orGate(0, 1)) print(orGate(1, 0)) print(orGate(0, 0))

apply call bind 简介
Function.prototype.call(thisArg [, arg1, arg2, ...]) call() 简述 call() 方法 调用一个函数, 其具有一个指定的 this 值和分别地提供的参数(参数的列表)。当第一个参数为 null、undefined 的时候, 默认 this 上下文指向window。call() 简单实例 const name qia…

自定义控件的构建(5)
Share 在ASP.NET框架中支持在回传中保存值的有2种方式:视图状态和控件状态 视图状态 ASP.NET中几个对象属性与控件最为密切的,就是ViewState了。 这里对其做下说明,任何可序列化类的实例均可添加到视图状态中,但是实际上ÿ…

Javascript之旅——第一站:从变量说起
原文出处: 一线码农的博客 欢迎分享原创到伯乐头条 工作这几年,js学的不是很好,正好周末有些闲时间,索性买本《js权威指南》,大名鼎鼎的犀牛书,好好的把js深入的看一看。买过这本书的第一印象就是贼厚&am…

从浏览器发展史读懂user-agent
世界上第一个浏览器:WorldWideWeb(和万维网重名),改名Nexus,只能在NeXT系统运行。 世界上第二个浏览器:Line Mode Browser,C语言编写,只能显示文本,可以移植到不同系统。 世界上第三个浏览器(…

在把 png 或者 gif“储存为 web 所用格式”时,勾选“交错”选项
选择“交错”可创建在整个图像文件的下载过程中,在浏览器中以低分辨率显示的图像。“交错”可以使下载时间显得较短,并使查看者确信下载正在进行。但是交错也会增大文件大小。转载于:https://www.cnblogs.com/dongzhiquan/archive/2010/07/28/1994585.ht…

学习GraphX
首先准备如下社交图形数据:打开spark-shell;导入相关包:import org.apache.spark._ import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD创建如上graph对象:// Create an RDD for the vertices val users: RDD[(Ve…

安装NodeJS环境报错
Failures - (exited 1) - Error while running C:\ProgramData\chocolatey\lib\visualstudio2019-workload-vctools\tools\ChocolateyInstall.ps1. 待解决

Eureka单机高可用伪集群配置
Eureka Server高可用集群理论上来讲,因为服务消费者本地缓存了服务提供者的地址,即使Eureka Server宕机,也不会影响服务之间的调用,但是一旦新服务上线,已经缓存在本地的服务提供者不可用了,服务消费者也无…

小小21点模拟
#include<iostream> #include<string> #include<cstdlib> #include<ctime> using namespace std; struct Card //一张扑克牌 { int value; //点数 string color; //花色 string face; //1-10、J、Q、K面值 }; void initCards(Card *cards) { for(int i…

BZOJ-1005 明明的烦恼
Prufer编码练习题,这个编码是跟树的生成计数有关系的。 推荐这篇博文:http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html 介绍地挺全面生动形象 会了Prufer之后这道题还要用上组合数学来高精度计算。 #include <cstdlib> #in…

使用npm打包后生成的package.json中重要字段含义
{"name": "demo",// 包名称,不能和npm平台上其他包重复"version": "1.0.0",// 版本号"description": "","main": "index.js",// 执行入口"scripts": {// 自定义脚本"test&quo…

Winform窗体应用程序的自动更新功能
本文将演示一种桌面程序自动更新方案,其步骤比较多,但原理非常简单,通用性尚可,对于小型应用来说,直接拿去就可以用了。原理服务器端的结构是这样的:其工作原理如下:Update.asmx 仅提供一个功能…
[UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode
原文:[UWP] 用 AudioGraph 来增强 UWP 的音频处理能力——AudioFrameInputNode上一篇心得记录中提到了 AudioGraph, 描述了一下 什么是 AudioGraph 以及其中涉及到的各种类型的 节点(Node)。 这一篇就其中比较有意思的 AudioFrameInputNode 来详细展开一…

Png透明背景的电话图标。
转载于:https://www.cnblogs.com/li0566/p/4343427.html

CSS改变nth-child()和nth-last-child()的参数灵活选择元素编号
注:下面的所有示例 1. div可以更换成任意标签 2. k是变量,可以换成特定数值,n保持不变 选中偶数行 div: nth-child(2n)div: nth-child(even) 选中奇数行 div :nth-child(odd)div :nth-child(2n-1) 选中前k行 div :nth-child(-nk) 选…

关于Silverlight中多项目共享DLL文件的讨论
假如你的解决方案中有两个Silverlight项目,其中的DLL文件时两个SL项目都使用到的,为了能够最大程度的减小XAP包的体积,你选择了系统的这个选项 编译后在Web的ClientBin文件夹下会出现这样的结构 这样呢,两个项目共享这些DLL的压缩…

核方法---径向基函数网络
为什么80%的码农都做不了架构师?>>> Nadarayas-Watson模型 转载于:https://my.oschina.net/liyangke/blog/2986510

c# 获取客户端IP地址方法
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser.Browser; 客户端浏览器 版本号: Request.Browser.M…

CSS结构选择器四种结构关系的范围
1. 空格: 表示<div>标签下所有的<h1>标签 div h1 2. >: 表示<div>标签下直接的<h1>标签 div>h1 3. ~:表示与<div>并列的所有<h1>标签 div~h1 4. :表示与<div>并列且紧邻的<h1>标签 divh1 注ÿ…

VMware前路难测,多个厂家群雄逐鹿
2019独角兽企业重金招聘Python工程师标准>>> 在人们高谈Salesforce、亚马逊等新兴云计算厂商取得的成就时,以VMware、HPE和Cisco为代表的老牌厂商也在进行着自己的转型和变化,而且还取得一定的进展。以VMware为例,虚拟机巨头公布了…

Silverlight学习笔记十七BingMap(六)之获取图片系统的图片信息ImageryService的应用...
BIngMap的ImageryService服务是一个微软发布的WCF服务,它用来获取图片系统的图片信息.服务地址:http://dev.virtualearth.net/webservices/v1/imageryservice/ImageryService.svc 本例中使用的是中文图片系统 效果如图 一、获取中文图片系统类࿰…

c++ stack 的使用
(1) stack::empty bool empty ( ) const; 判断是否为空。 return Value : true if the container size is 0, false otherwise; (2) stack::pop void pop ( ); 在栈的顶部移除元素。 (3) stack::push void push ( const T& x ); 在栈顶添加元素 (4) stack::size size_type …