F - Fraction Formula Gym - 102307F
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
1/2+1/3
1/5-2/10
1/2+(1/2-2/1)
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的更多相关文章
- Frightful Formula Gym - 101480F (待定系数法)
Problem F: Frightful Formula \[ Time Limit: 10 s \quad Memory Limit: 512 MiB \] 题意 题意就是存在一个\(n*n\)的矩 ...
- Ceizenpok’s formula Gym - 100633J 扩展Lucas定理 + 中国剩余定理
http://codeforces.com/gym/100633/problem/J 其实这个解法不难学的,不需要太多的数学.但是证明的话,我可能给不了严格的证明.可以看看这篇文章 http://ww ...
- AtCoder Grand Contest 003 F - Fraction of Fractal
题目传送门:https://agc003.contest.atcoder.jp/tasks/agc003_f 题目大意: 给定一个\(H×W\)的黑白网格,保证黑格四连通且至少有一个黑格 定义分形如下 ...
- Atcoder Grand Contest 003 F - Fraction of Fractal(矩阵乘法)
Atcoder 题面传送门 & 洛谷题面传送门 Yet another AGC F,然鹅这次就没能自己想出来了-- 首先需注意到题目中有一个条件叫做"黑格子组成的连通块是四联通的&q ...
- R笔记(1):formula和Formula
#####开一个新的系列.关于R的一些笔记,就是遇到过的一些问题的简单整理.可能很基本,也可能没什么大的用处,作为一个记录而已.------------------------------------ ...
- Gym - 101480 CERC 15:部分题目题解(队内第N次训练)
-------------------题目难度较难,但挺有营养的.慢慢补. A .ASCII Addition pro:用一定的形式表示1到9,让你计算加法. sol:模拟. solved by fz ...
- 2017 United Kingdom and Ireland Programming(Gym - 101606)
题目很水.睡过了迟到了一个小时,到达战场一看,俩队友AC五个了.. 就只贴我补的几个吧. B - Breaking Biscuits Gym - 101606B 旋转卡壳模板题.然后敲错了. 代码是另 ...
- [C2P3] Andrew Ng - Machine Learning
##Advice for Applying Machine Learning Applying machine learning in practice is not always straightf ...
- objective-c第七章课后练习3
题:Fraction类对负分数适用吗?例如:1/4-1/2 能否显示成-1/4? //--------类定义实现参考上篇随笔,此处需更改print方法和main主方法部分---------- - (v ...
随机推荐
- 漫谈计算机组成原理(七)I/O系统
本文讲什么? 这个系列的文章其实可以分成两个部分,计算机系统的其他硬件结构和CPU. 而我们今天要讲述的内容,就是其他硬件结构中的最后一个部分--I/O(输入输出)系统. 这篇文章主要讲述的就是I/O ...
- 资源的合并与压缩-html压缩
资源的合并:减少http请求数量 资源的压缩:减少请求资源的大小 html压缩 html代码压缩就是压缩这些在文本文件中有意义,但是在html中不显示的字符,包括空格,制表符,换行符等,还有一些其他意 ...
- 【转】CSS实现自适应分隔线的N种方法
1.伪元素+transform:translateX(-100%); 主要原理是设置文本居中text-align: center;,然后给定两个伪元素,分别绝对定位,那么此时伪元素也是跟随着水平居中的 ...
- Swift保存RSA密钥到Keychain
https://www.jianshu.com/p/c1e9bffc76f4 最近项目的需求用到RSA的加密解密,并且需要把公钥信息保存到Keychain里面,网上很多文章都是用Keychain保存账 ...
- python从命令窗口启动脚本 创建并写入内容到文件示例
写入到文件示例: #!/usr/bin/env python3 from math import exp, log, sqrt import re from datetime import date, ...
- faster rcnn报错:TypeError: slice indices must be integers or None or have an __index__ method
https://blog.csdn.net/qq_27637315/article/details/78849756 https://blog.csdn.net/qq_21089969/article ...
- Linux基础应用
Linux刚面世时并没有图形界面,因此所有的操作全靠命令完成,如磁盘操作.文件读取.目录操作.进程管理.文件权限等都要通过命令完成.且在职场中,大量的服务器维护都是通过远程命令来完成. 常用的7个命令 ...
- Win10教育版VL版kms密钥激活
1.右键开始图标,或者win+x,选择Windows PowerShell(管理员): 2.依次执行下面的命令,分别表示安装win10教育版密钥,设置kms服务器,激活win10教育版: slmgr ...
- MYSQL连接不上100061错误
有界面的情况下启动MYSQL 无界面 https://blog.csdn.net/qq_22233621/article/details/72673176 参考
- DRF框架之序列化器初体验
首先,我们需要明白序列化和反序列化的过程指的是什么. 序列化操作:将模型数据 ---> 字典数据 --->JSON数据(响应JSON数据的操作) 反序列化操作:将JSON数据 ---> ...