2017 计蒜之道 初赛 第二场 百度的科学计算器(简单)
来源:互联网 发布:网易域名管理网站 编辑:程序博客网 时间:2024/06/10 09:46
https://nanti.jisuanke.com/t/15504
大概就是一个模拟
遇到一个新括号就当作提升一个level然后将原来level的结果压入栈内 括号结束后再弹出
需要的注意是有个强制转换的关系 如果没有出现浮点数答案是输出整数
并且整数会爆int(比赛死在这里了哭哭)
#include <iostream>#include <algorithm>#include <sstream>#include <string>#include <queue>#include <cstdio>#include <map>#include <set>#include <utility>#include <stack>#include <cstring>#include <cmath>#include <vector>using namespace std;#define pb push_back#define scand(n) scanf("%d",&n)#define scandd(n,m) scanf("%d%d",&n,&m)#define scanddd(n,m,k) scanf("%d%d%d",&n,&m,&k)#define scanlld(n) scanf("%lld",&n)#define scanlldd(n,m) scanf("%lld%lld",&n,&m)#define scanllddd(n,m,k) scanf("%lld%lld%lld",&n,&m,&k)#define scanlf(n) scanf("%lf",&n)#define scanlff(n,m) scanf("%lf%lf",&n,&m)#define scanlfff(n,m,k) scanf("%lf%lf%lf",&n,&m,&k)#define scans(str) scanf("%s",str)#define ans() printf("%d",ans)#define ansn() printf("%d\n",ans)#define anss() printf("%d ",ans)#define llans() printf("%lld",ans)#define llanss() printf("%lld ",ans)#define llansn() printf("%lld\n",ans)#define REP(i,n) for(int i=0;i<(n);++i)#define REA(i,qwe,ewr) for(int i=qwe;i<=ewr;++i)#define RER(i,qwe,ewr) for(int i=qwe;i>=ewr;--i)#define mst(abc,bca) memset(abc,bca,sizeof abc)#define all(a) a.begin(),a.end()#define pii pair<int,int>#define mp make_pairtypedef long long ll;inline int read(){ int x=0,f=1; char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); } while(ch>='0'&&ch<='9') { x=x*10+ch-'0'; ch=getchar(); } return x*f;}inline int mul_mod(int a, int b, int mo){ int ret; __asm__ __volatile__ ("\tmull %%ebx\n\tdivl %%ecx\n" : "=d"(ret):"a"(a),"b"(b),"c"(mo)); return ret;}const int mod = 1000000007;const double eps=1e-9;const int INF=0x3f3f3f3f;const int MAXN=3001105;char s[5000];int main(){#ifdef LOCAL freopen("input.txt","r",stdin);// freopen("output.txt","w",stdout);#endif // LOCAL int n; scand(n); scans(s+1); stack<double>num; stack<char>sy; n=strlen(s+1);// double ans =0; double now = 0 ; char sym='+'; double check=0; bool point=0; double lit; bool had=0; int cir=0; bool ok=1; for(int i=1;i<=n;++i) { char ch = s[i]; if(s[i]=='(') { sy.push(sym); sym = '+'; num.push(now); now=check=0; point=0; cir++; } else if(s[i]==')') { now+=check; check = now; sym = sy.top();sy.pop(); now = num.top();num.pop(); int idx = sym=='+'?1:-1; now+=idx*check; check=0; sym = '+'; point=0; cir--; } else if(s[i]=='+'||s[i]=='-') { now+=check; check=0; sym = s[i]; point=0; } else { int idx = sym=='+' ? 1:-1; if(s[i]>='0'&&s[i]<='9') { if(point) { check+=idx*lit*(s[i]-'0'); lit/=10; } else { check*=10; check+=idx*(s[i]-'0'); } } else if(s[i]=='.') { point=1; lit=0.1; had=1; } } } if(cir)return 0*printf("No Answer"); ll ans = now + check; if(had) printf("%f",now+check); else llans(); return 0;}
阅读全文
0 0
- 2017 计蒜之道 初赛 第二场 百度的科学计算器(简单)
- 2017 计蒜之道 初赛 第二场 B.百度的科学计算器(简单)
- 2017 计蒜之道 初赛 第二场 B. 百度的科学计算器(简单)
- 2017计蒜之道初赛_百度的科学计算器(简单难度)
- 2016计蒜之道初赛第三场----百度的科学计算器【模拟】
- 2017 计蒜之道 初赛 第二场 A题(百度的年会游戏)
- 2017计蒜之道初赛第二场-百度的年会游戏
- 2017 计蒜之道 初赛 第四场 (第二题) B. 商汤科技的行人检测(简单)
- 2017 计蒜之道 初赛 第一场 阿里天池的新任务(简单)(KMP)
- 2017计蒜之道 初赛第一场 阿里天池的新任务(简单)
- 2017 计蒜之道 初赛 第一场 阿里的天池任务(简单)
- 2017计蒜之道初赛第四场-商汤科技的行人检测(简单)
- 2016 计蒜之道 初赛 第三场 百度帐号的选取方案(中等) KMP
- 计蒜之道 初赛 第二场 人人都有极客精神
- 计蒜之道 初赛 第二场 题解 树形dp
- 2016 计蒜之道 初赛 第二场(待补)
- 2016 计蒜之道 初赛 第一场 青云的机房组网方案(简单)
- 计蒜之道初赛第一场-阿里天池的新任务(简单)
- Shell while循环
- 为了生活所做的努力
- linux spi驱动与应用调用流程
- 数据结构之单链表
- 详细讲解下HTML中的<form>和<input>的用法
- 2017 计蒜之道 初赛 第二场 百度的科学计算器(简单)
- C++读取整行的方法
- epoll_thred_queue
- 集合类框架
- LeetCode 167. Two Sum II
- <scrapy>python 爬虫框架scrapy安装
- 维基百科数据库处理,用于训练word2vec
- Request.getparameternames有什么用
- java异常处理机制