南阳理工ACM-OJ 分数加减法 最大公约数的使用
http://acm.nyist.net/JudgeOnline/problem.php?pid=111
简单模拟:
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int gcd(int a,int b)
{
if(a<b)return gcd(b,a);
if(b==0)return a;
return gcd(b,a%b);
}
int lcm(int a,int b)
{
return a*b/gcd(a,b);
}
int main()
{
string s;
int fz1,fm1,fz2,fm2;
char ch;
while(cin>>s)
{
fz1=s[0]-'0';
fm1=s[2]-'0';
fz2=s[4]-'0';
fm2=s[6]-'0';
ch=s[3];
int fm=lcm(fm1,fm2);
fz1=fz1*(fm/fm1);
fz2=fz2*(fm/fm2);
int fz;
if(ch=='+'){
fz=fz1+fz2;
if(fz%fm==0){cout<<fz/fm<<endl;continue;}// 2/1或者4/2这种情况应该直接输出
int tmp=gcd(fz,fm);
fz=fz/tmp;
fm=fm/tmp;
if(fz==fm)cout<<1<<endl;
else
cout<<fz<<"/"<<fm<<endl;
}
else {
fz=fz1-fz2;
if(fz%fm==0){cout<<fz/fm<<endl;continue;}
if(fz==0)cout<<0<<endl;
else {
int tmp;
if(fz<0)
tmp=gcd(-fz,fm);
else tmp=gcd(fz,fm);
fz=fz/tmp;
fm=fm/tmp;
if(fz==fm)cout<<1<<endl; // 1/1这种情况应该输出1
else
cout<<fz<<"/"<<fm<<endl;
}
} }
return 0;
}
南阳理工ACM-OJ 分数加减法 最大公约数的使用的更多相关文章
- 矩形嵌套 南阳理工ACM
描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1, ...
- 单调递增最长子序列(南阳理工ACM)
描述 求一个字符串的最长递增子序列的长度如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0<n<20,表示有n个字符串要处理随后的n行,每行有一个字符串,该字符串 ...
- 南阳理工ACM 括号匹配问题,并求出使得括号能够匹配需要新增的最小括号数(括号匹配(二))
描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起 ...
- 南阳理工ACM Skiing问题
描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道载一个区域中最长底 ...
- 南阳理工ACM——106背包问题
描述: 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10):如果给你一个背包它能容纳的重量为m(10<=m<=20),你 ...
- 2015,3,10 2(南阳理工ACM)
描述有一个整型偶数n(2<= n <=10000),你要做的是:先把1到n中的所有奇数从小到大输出,再把所有的偶数从小到大输出. 输入 第一行有一个整数i(2<=i<30) ...
- 2015,3,10 1(南阳理工ACM)
描述输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输入一个数N,表示有N组测试数据.后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成, ...
- ACM 分数加减法
分数加减法 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 编写一个C程序,实现两个分数的加减法 输入 输入包含多行数据 每行数据是一个字符串,格式是" ...
- 南阳理工 题目9:posters(离散化+线段树)
posters 时间限制:1000 ms | 内存限制:65535 KB 难度:6 描述 The citizens of Bytetown, AB, could not stand that ...
随机推荐
- Java线程(学习整理)--3--简单的死锁例子
1.线程死锁的概念: 简单地理解下吧! 我们都知道,线程在执行的过程中是占着CPU的资源的,当多个线程都需要一个被锁住的条件才能结束的时候,死锁就产生了! 还有一个经典的死锁现象: 经典的“哲学家就餐 ...
- slf4j与log4j
推荐使用SLF4J(Simple Logging Facade for Java)作为日志的api,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统. ...
- FlightGear 视角控制
Flightgear提供了非常灵活的模块化功能 这里就简要记录一下视角切换功能 首先,需要了解一下Flightgear中的property tree的主要内容,这里暂略. http://wiki.fl ...
- 自构BeanHandler(用BeansUtils)
class BeanHandler<T> implements ResultSetHandler<T>{ private Class<T> clazz; publi ...
- Canvas实现文字粒子化,并且绕轴旋转(初号机)
写下来发现,程序在细节上处理的很差,比如旋转的时候,在终点处有明显的撞墙感觉,以及小部分粒子存在精度差异,导致撞击后不与整体平衡. 注释全在代码中了,就不多说了,另外感觉写的旋转的规则有点怪,后续再调 ...
- thinkphp 中js 实现刷新
<input name="Button5" value="返回" id="Button5" style="width:56p ...
- 技术大牛面试 http://www.itmian4.com/forum.php?mod=viewthread&tid=3824
不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人,NOI金牌,开源社区名人,三年级开始写Basic...在跪拜之余我们不禁要想,和这些牛人比,作为绝大部分技 ...
- windows下搭建PHP环境
1.Apache 下载地址:http://httpd.apache.org/download.cgi 下载之后进入CMD,/Apache/bin/httpd.exe -k install 进行安装 提 ...
- python Hbase Thrift pycharm 及引入包
cp -r hbase/ /usr/lib/python2.7/site-packages/ 官方示例子http://code.google.com/p/hbase-thrift/source/bro ...
- cut 命令
今天看到cut拿来取参数也是很方便的. cut -d = -f 2 -d表示分隔符 -f参数是分隔符算第几个参数