Mr. Potato Head has been promoted and now is a math professor at the UNAL.

For his first course he is willing to teach hard subjects, so at the moment he is teaching how to add and subtract fractions.

To complete his course the students have to do a long series of exercises, each exercise corresponds to a valid formula containing only additions and subtractions of fractions.

Formally a valid formula is one of the following:

  • A fraction
  • F1+F2F1+F2
  • F1−F2F1−F2
  • (F1)(F1)

where F1F1 and F2F2 are also valid formulas.

Mr. Potato Head knows that the exam would be impossible if fractions are too large or if they are negative, so he decides that for every fraction a/ba/b, 0≤a≤1000≤a≤100 and 0<b≤200<b≤20.

Can you pass the course of Mr. Potato Head?

Input

The input consists of several lines, each line contains a valid formula without spaces.

It is guaranteed that all lines contains valid formulas and the total number of characters in all formulas does not exceed 2∗1052∗105

Output

For each formula output a line with an irreducible fraction a/ba/b, b>0b>0 −− The solution of the corresponding formula

Example

Input
1/2+1/3
1/5-2/10
1/2+(1/2-2/1)
Output
5/6
0/1
-1/1

Note

A fraction is irreducible if its numerator and denominator do not have common divisors greater than 1

题解:只有加减法和括号的运算,可直接从前往后挨个计算,只需判断当前的符号是+或-即可.

#include <bits/stdc++.h>
#define met(a, b) memset(a, b, sizeof(a))
#define ll long long
#define ull unsigned long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
ll gcd(ll a,ll b){return b==?a:gcd(b,a%b);}
ll lcm(ll a,ll b){return a*b/gcd(a,b);}
typedef pair<ll,ll>P;
const int maxn=;
const double eps=1e-;
const double pi=acos(-);
char s[maxn];
int len;
P ans;
int f,ff;
P cal(P ans,P now)
{
ll son=ans.first*now.second+f*ff*now.first*ans.second;
ll mon=ans.second*now.second;
ll g=gcd(abs(son),abs(mon));
son/=g;
mon/=g;
return P(son,mon);
}
P ok(int pos)
{
ll son=,mon=,l=-;
for(int i=pos-;i>=;i--){
if(s[i]<''||s[i]>''){
l=i;
break;
}
}
for(int i=l+;i<len;i++){
if(s[i]>=''&&s[i]<='')son=son*+s[i]-'';
else break;
}
for(int i=pos+;i<len;i++){
if(s[i]>=''&&s[i]<='')mon=mon*+s[i]-'';
else break;
}
return P(son,mon);
}
int main()
{
while(cin>>s){
stack<int>sta;
len=strlen(s);
ans=P(,);
f=ff=;
for(int i=;i<len;i++){
if(s[i]=='+'){
f=;
}
else if(s[i]=='-'){
f=-;
}
else if(s[i]=='('){
f=;
if(s[i-]=='-'){
ff*=-;
sta.push(-);
}
else{
sta.push();
}
}
else if(s[i]==')'){
int w=sta.top();
ff*=w;
sta.pop();
}
else if(s[i]=='/'){
P now=ok(i);
ans=cal(ans,now);
}
}
cout<<ans.first<<"/"<<ans.second<<endl;
}
return ;
}

F - Fraction Formula Gym - 102307F的更多相关文章

  1. Frightful Formula Gym - 101480F (待定系数法)

    Problem F: Frightful Formula \[ Time Limit: 10 s \quad Memory Limit: 512 MiB \] 题意 题意就是存在一个\(n*n\)的矩 ...

  2. Ceizenpok’s formula Gym - 100633J 扩展Lucas定理 + 中国剩余定理

    http://codeforces.com/gym/100633/problem/J 其实这个解法不难学的,不需要太多的数学.但是证明的话,我可能给不了严格的证明.可以看看这篇文章 http://ww ...

  3. AtCoder Grand Contest 003 F - Fraction of Fractal

    题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_f 题目大意: 给定一个\(H×W\)的黑白网格,保证黑格四连通且至少有一个黑格 定义分形如下 ...

  4. Atcoder Grand Contest 003 F - Fraction of Fractal(矩阵乘法)

    Atcoder 题面传送门 & 洛谷题面传送门 Yet another AGC F,然鹅这次就没能自己想出来了-- 首先需注意到题目中有一个条件叫做"黑格子组成的连通块是四联通的&q ...

  5. R笔记(1):formula和Formula

    #####开一个新的系列.关于R的一些笔记,就是遇到过的一些问题的简单整理.可能很基本,也可能没什么大的用处,作为一个记录而已.------------------------------------ ...

  6. Gym - 101480 CERC 15:部分题目题解(队内第N次训练)

    -------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...

  7. 2017 United Kingdom and Ireland Programming(Gym - 101606)

    题目很水.睡过了迟到了一个小时,到达战场一看,俩队友AC五个了.. 就只贴我补的几个吧. B - Breaking Biscuits Gym - 101606B 旋转卡壳模板题.然后敲错了. 代码是另 ...

  8. [C2P3] Andrew Ng - Machine Learning

    ##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...

  9. objective-c第七章课后练习3

    题:Fraction类对负分数适用吗?例如:1/4-1/2 能否显示成-1/4? //--------类定义实现参考上篇随笔,此处需更改print方法和main主方法部分---------- - (v ...

随机推荐

  1. GRADLE依赖的统一管理

    参考链接:http://stormzhang.com/android/2016/03/13/gradle-config/ 我想大部分人应该都在使用Gradle来依赖管理,还没有使用的去面壁思过,Gra ...

  2. 考研c语言基础 66++6

    1.数据类型 对于基本的数据类型,如整型int,long,...(考研中涉及处理的整数题目,如果没有特别要求用int足够了),字符型char,浮点型float.double...(对于处理小数问题,在 ...

  3. Resource interpreted as Stylesheet but transferred with MIME || DevTools failed to parse SourceMap:

    最近在学SpringBoot,在整合Thymeleaf的时候,配置拦截器.教学上讲SpringBoot已经做好了静态资源映射,所以不需要特地去做排除拦截 以下代码就是我在做登录拦截的时候配置的拦截. ...

  4. 【转】TransactionScope事务处理方法介绍及.NET Core中的注意事项

    什么是TransactionScope呢? TransactionScope作为System.Transactions的一部分被引入到.NET 2.0.同时SqlClient for .NET Cor ...

  5. 51nod 1393:0和1相等串

    1393 0和1相等串 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给定一个0-1串,请找到一个尽可能长的子串,其中包含的0与1的个数相等. I ...

  6. 文献阅读报告 - Social LSTM:Human Trajectory Prediction in Crowded Spaces

    概览 简述 文献所提出的模型旨在解决交通中行人的轨迹预测(pedestrian trajectory prediction)问题,特别是在拥挤环境中--人与人交互(interaction)行为常有发生 ...

  7. HDU 2795 Billboard 线段树活用

    题目大意:在h*w 高乘宽这样大小的 board上要贴广告,每个广告的高均为1,wi值就是数据另给,每组数组给了一个board和多个广告,要你求出,每个广告应该贴在board的哪一行,如果实在贴不上, ...

  8. ZOJ 1454 dp

    Employment Planning Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu S ...

  9. 安装eclipse步骤以及配置jdk

    1.官网下载eclipse 2.下载jdk并且安装,记住自己安装路径 3.配置jdk环境变量 在高级系统设置里面配置 新建: 用户变量:“变量名”:JAVA_HOME “变量值”:C:\Program ...

  10. Linux设置邮箱发送邮件

    安装sendmail服务 然后配置/etc/mail.rc文件,如果没有生成就自己建立. 内容如下: set from=xxx@163.com smtp=smtp.163.com set smtp-a ...