【U218】A-B
Time Limit: 1 second
Memory Limit: 128 MB
【问题描述】
给出一个A/B-C/D表示的分数减法算式,A,B,C,D均为不超过32767的正整数,求A/B-C/D的差,若差为整数,则输出这个整数;若差为分数,则按A/B格式输出;要求为最简分数,若差为负数,则在上述要求下最前面添加负号。 输入中A/B或C/D有可能不是最简分数,但是你的输出必须是最简分数。
【输入格式】
输入文件aminusb.in的第1行为一个正整数T,表示数据组数, 接下来T行,每行为按A/B-C/D格式给出的算式。
【输出格式】
输出文件aminusb.out包括T行,分别对于每个算式给出答案。
【数据规模】
对于30%的数据,有T≤10; 对于100%的数据,有T≤10000。
Sample Input1
3
1/3-1/2
10/4-2/2
3/2-1/2
Sample Output1
-1/6
3/2
1
【题解】 C++可以直接用scnaf过滤掉-和/。所以读入a,b,c,d不是问题。
然后对于输入的a,b获取他们的最大公因数k。然后同时除掉k。
c和d也是一样。同时除k。
然后a/b-c/d用通分的方法 = (a*d-b*c)/(b*d)
然后一开始符号为正(1),若是分子为负数,把分子取相反数,然后符号为1-flag == 0(负数);
如果分母也是负号,则分母也取反。然后符号为1-flag == 1(正数);
最后如果符号为负,则输出一个“-”,然后输出分子/分母的形式即可。 【代码】#include <cstdio> int t,a,b,c,d; int gcd(int a, int b) //获取a和b的最大公因数。
{
if (b == 0)
return a;
else
return gcd(b, a % b);
} int main()
{
scanf("%d", &t);
for (int i = 1; i <= t; i++) //输入t组数据
{
scanf("%d/%d-%d/%d", &a, &b, &c, &d); //可以直接过滤出a,b,c,d;
int k = gcd(a, b);//获取a和b的最大公因数。
a /= k;
b /= k;//模拟约分过程
k = gcd(c, d); //获取c和d的最大公因数。
c /= k;//模拟约分
d /= k;
bool flag = 1; //最后答案的符号
int fenzi = a*d - b*c;
if (fenzi < 0) //分子为负数改变答案符号
{
flag = 1 - flag;
fenzi = -fenzi; //同时保证分子和分母都是非负数。
}
int fenmu = b*d;
if (fenmu < 0)//分母为负数改变答案符号。
{
flag = 1 - flag;
fenmu = -fenmu;
}
if (!flag)//如果最后答案是负数则输出一个负号
printf("-");
k = gcd(fenzi, fenmu); //最后的分子和分母也要进行一次约分操作。
fenzi /= k;
fenmu /= k;
if (fenmu == 1 || fenzi == 0) //如果分母是1或者分子是0则输出一个整数。(分子和0)
printf("%d\n", fenzi);
else //否则按照分数的形式正常输出即可。
printf("%d/%d\n", fenzi, fenmu);
}
return 0;
}
【U218】A-B的更多相关文章
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- Python高手之路【三】python基础之函数
基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...
- Python高手之路【一】初识python
Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
随机推荐
- Vue前后端分离常用JS函数点(一)
1.筛选过滤:array.filter(function(val){}); 会把array中符合规则的数组元素按array里面的元素顺序保留下来. // 官方解释:按返回true或者false,把不 ...
- USACO 2009 Dec cow toll paths 过路费-floyd
这道题首先要明确一点,那就是当你从一个点走到自己时,也是需要花费这个点点权值的费用.这个点卡了我两次QWQ 然后我比较喜欢分两步搞: 首先,我们利用floyd的一个性质:就是在更新其他点之间的路线时要 ...
- PHP服务器环境打开配置文件
MAC 1. cd /usr/local/etc/nginx/servers vim www.xxx.com 2. 在/usr/local/etc/nginx/servers目录下,不同的 .con ...
- Flask项目之手机端租房网站的实战开发(十)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/8 ...
- C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)
在主线程定要禁止使用waitforsingleobject(),原因是会阻塞主线程的消息循环,所以必须使用另一种 MsgWaitForMultipleObjects,即可以让消息通过,下面就是一个基于 ...
- 仿oschina 主界面的实现(二) -------Toolbar + DrawerLayout
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- Android Studio插件推荐-GsonFormat,ButterKnifeZelezny
原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/50557786 本篇介绍的仅仅适用android studio和 Intellij ...
- 学习redis--简介(一)
1.什么是redis? Redis是使用c语言开发的一个高性能键值数据库.Redis通过键值类型来存储数据.它通过提供多种键值数据类型来适应不同场景的存储需求. 2.redis支持哪些数据类型 Key ...
- mysql :Native table 'performance_schema'.'cond_instances' has the wrong structure
err: 150418 13:25:06 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong struct ...
- PHP 分布式集群中session共享问题以及session有效期的设置
https://blog.csdn.net/m_nanle_xiaobudiu/article/details/81177698