cdoj 秋实大哥搞算数
地址:http://acm.uestc.edu.cn/#/contest/show/95
题目:
N - 秋实大哥搞算数
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
秋实大哥大学物理挂科了(误),于是在下学期的前两周的某一天要悲剧的补考。为了不给学校的挖掘机大楼做贡献,秋实大哥决定在假期里努力复习。当然,良好的计算能力也是非常必要的,毕竟是涉及计算自己做多少分的题能够通过考试的问题。现在他给自己出了一大堆长长的只有涉及整形四则运算式子,然后埋头计算结果。为了检验自己的计算能力,他请你来帮忙。
Input
第一行一个整数T,表示式子的总数。
接下来每一行有一个长度不超过10^6的表达式,只包含正整数和四则运算符号('+', '-', '*', '/')。
保证输入合法。
Output
对于每一个表达式,输出相应的结果,占一行。
保证运算及结果在long long范围以内。
Sample input and output
Sample Input | Sample Output |
---|---|
|
|
思路:
,,wa次数最多的题目,,一开始没判\r(第一见要判这个的,涨姿势了),,,wa无数次
然后智商不够,用栈搞不出来,又只能自己想了。。。。。。
我的做法是对答案有影响的就三个操作符,当前读取的操作符,和前两个,然后对所有情况分类讨论,,,这样就可以在读取的时候做的一边读取一边计算了。。。
- #include <iostream>
- #include <algorithm>
- #include <cstdio>
- #include <cmath>
- #include <cstring>
- #include <queue>
- #include <stack>
- #include <map>
- #include <vector>
- #include <cstdlib>
- #include <string>
- #define PI acos((double)-1)
- #define E exp(double(1))
- using namespace std;
- int main (void)
- {
- int t;
- cin>>t;
- getchar();
- while(t--)
- {
- long long num[],ans=;
- char op[],c;
- scanf("%lld",&num[]);
- if(scanf("%c",&c)==EOF||c=='\n')
- {
- printf("%lld\n",num[]);continue;
- }
- op[]=c;//3为当前操作数
- scanf("%lld",&num[]);
- while(scanf("%c",&op[])!=EOF && op[]!='\n')
- {
- scanf("%lld",&num[]);
- if(op[]=='*'||op[]=='/')
- {
- if(op[]=='+'||op[]=='-')
- {
- if(op[]=='*')num[]*=num[];
- else num[]/=num[];
- }
- else
- {
- if(op[]=='*') num[]*=num[];
- else num[]/=num[];
- num[]=num[];
- op[]=op[];
- }
- }
- else
- {
- if(op[]=='+'||op[]=='-')
- {
- if(op[]=='+') num[]+=num[];
- else num[]-=num[];
- num[]=num[];
- op[]=op[];
- }
- else
- {
- if(op[]=='*') num[]*=num[];
- else num[]/=num[];
- num[]=num[];
- op[]=op[];
- }
- }
- }
- if(op[]=='*') ans=num[]*num[];
- else if(op[]=='/') ans=num[]/num[];
- else if(op[]=='+') ans=num[]+num[];
- else ans=num[]-num[];
- printf("%lld\n",ans);
- }
- return ;
- }
cdoj 秋实大哥搞算数的更多相关文章
- UESTC 1074 秋实大哥搞算数 栈模拟
秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
- UESTC_秋实大哥搞算数 2015 UESTC Training for Data Structures<Problem N>
N - 秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Subm ...
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
秋实大哥搞算数 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1074 Des ...
- cdoj 秋实大哥与战争
首先,显然每个区间的最长连续子区间要么在左孩子里,要么在右孩子里,要么跨越两个孩子.于是我们可以对每个区间维护如下信息ll(left long),rl(rigth long),ml(mid long) ...
- cdoj 秋实大哥带我飞 最短路走法 含0权边
//做完这题以后终于理解白书上的边为什么要那样定义了 可以很方便的在o(1) 时间内找到反向边 解法:先跑一边最短路,然后检查最短路上有没有0权边(dfs就好,但是每条边只能走一次,这里就需要用异或找 ...
- CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图
题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu S ...
- CDOJ 1070 秋实大哥打游戏 带权并查集
链接 F - 秋实大哥打游戏 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit ...
- CDOJ 1069 秋实大哥去打工 单调栈 下标处理
E - 秋实大哥去打工 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Submit St ...
- CDOJ 1061 C - 秋实大哥与战争 STL set 迭代器
题目链接: C - 秋实大哥与战争 Time Limit:1000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu Sub ...
随机推荐
- js 控制按钮点击后不可用
<input type="button" id="btn" value="免费获取验证码" /> <script type ...
- .NET平台下 极光推送
正好看到别人发了个极光的推送例子,想来前面也刚做过这个,就把我的push类共享下 public class JPush { /// <summary> /// push信息到手机应用上 J ...
- 请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框。程序可以判断出用
请写出一段JavaScript代码,要求页面有一个按钮,点击按钮弹出确认框.程序可以判断出用 户点击的是“确认”还是“取消”. 解答: <HTML> <HEAD> <TI ...
- java web学习笔记-jsp篇
1.java web简介 1.1静态页面与动态页面 表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,ja ...
- MFC中CString转换成char数组的问题
由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串.关于它们之间的转换,在VS2008中有时会出现异 ...
- git上解决代码冲突(merge版)
1.切换到master: git checkout master 2.拉最新代码:git pull origin master 3.切换到提交的分支:git checkout Txxxx 4.合并:g ...
- Oozie安装与部署
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3885162.html 安装基础环境: Hadoop – 2.2.0 Linux – Centos 6. ...
- React课程学习
http://guoyongfeng.github.io/idoc/index.html
- python入门(四):标准输出和文件读写
Python输出 1.表达式语句 str(): 函数返回一个用户易读的表达形式,可以使用 str.format() 函数来格式化输出值. repr(): 产生一个解释器易读的表达形式. 2.print ...
- Activity公用跳转到主Activity
public class VSession { private VSession() { } public static VSession getInstance() { if (session == ...