ZZULIOJ (1913: 小火山的计算能力)

来源:互联网 发布:非农数据软件 编辑:程序博客网 时间:2024/04/30 12:02

Description

别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。

Input

首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。

Output

输出运算结果。

Sample Input

2
1+1
2+1-1
Sample Output

2
2
这道题我也不是用栈模拟的,因为n的范围好小啊,就直接暴力的,第二次做这种题了,还是练得少

#include<stdio.h>#include<stack>#include<iostream>#include<string.h>#include<algorithm>#define LL long longconst int N=100005;using namespace std;int main(){    int t,i,j,len,flag,flag1;    LL sum=0,sum1=0;    scanf("%d",&t);    char s[210];    while(t--)    {        scanf("%s",s);        len=strlen(s);        sum=0,sum1=0;        flag=0,flag1=0;        j=0;        while(s[j]>='0'&&s[j]<='9')        {            sum=sum*10+s[j]-'0';            j++;        }        sum1=sum;        sum=0;        for(i=j; i<len; i++)        {            if(s[i]>='0'&&s[i]<='9')            {                while(s[i]>='0'&&s[i]<='9')                {                    sum=sum*10+s[i]-'0';                    i++;                }              i=i-1;            }            if(flag==1&&flag1==0)            {                sum1+=sum;                flag=0;                flag1=0;            }            else if(flag1==1&&flag==0)            {                sum1-=sum;                flag=0;                flag1=0;            }            if(s[i]=='+')            {                sum=0;                flag=1;                flag1=0;            }            if(s[i]=='-')            {                sum=0;                flag1=1;                flag=0;            }        }        printf("%lld\n",sum1);    }    return 0;}
0 0
原创粉丝点击