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 |
|---|---|
2 |
12 |
思路:
,,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 ...
随机推荐
- AWT是Java基础类 (JFC)的一部分,为Java程序提供图形用户界面(GUI)的标准API
抽象窗口工具包 (Abstract Windowing Toolkit) (AWT)是Java的平台独立的窗口系统,图形和用户界面器件工具包. AWT是Java基础类 (JFC)的一部分,为Java程 ...
- ISP图像调试工程师
汉邦高科 任职要求: 1. 电子工程.图像与信号处理.计算机等相关专业,本科及以上学历: 2. 在数字图像处理.视频压缩等方面具有扎实的理论背景知识: 3. 熟悉Sony.Panasonic.Apti ...
- Pat(Advanced Level)Practice--1026(Table Tennis)
Pat1026代码 题目描写叙述: A table tennis club has N tables available to the public. The tables are numbered ...
- 【LeetCode】Copy List with Random Pointer
A linked list is given such that each node contains an additional random pointer which could point t ...
- 74、shape 画圆 加 边框
<?xml version="1.0" encoding="utf-8"?> <!--<shape xmlns:android=&quo ...
- Linux下自动调整时间和时区与Internet时间同步
(原文链接) 调整linux系统时间和时区与Internet时间同步一.修改时区:# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime修改为中国的 ...
- CAS SSO单点登录框架介绍
1.了解单点登录 SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...
- 【原】storm源码之巧用java反射反序列化clojure的defrecord获取属性值
storm源码是clojure.java.python的混合体.在解决storm-0.8.2的nimbus单点问题的过程中需要从zookeeper上读取目前storm集群中正在运行的assignmen ...
- 深入java虚拟机(二) 对象的创建
java创建对象通常的方式是使用new指令,虚拟机会首先检查new指令的参数(也就是new关键字后面跟着的类名)是否能够在常量池中找到一个类的符号引用,并根据这个符号引用检查其代表的类是否已经加载.解 ...
- 使用sendmail来发邮件
安装sendEmail sendEmail是一个免费.轻量级.命令行的SMTP邮件客户端. 如果你需要使用命令行方式发送邮件,那么sendEmail是非常完美的选择:使用简单.功能强大. wget - ...