1913: 小火山的计算能力
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 516 Solved: 140
Submit Status Web Board
Description
别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。
Input
首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。
Output
输出运算结果。
Sample Input
21+12+1-1
Sample Output
22
HINT
Source
完全搞不通那么简单的一道题,非要用这样的方法做,无语,简单的方法老是超时,无语@_@
<span style="font-size:18px;">#include<cstdio>
#include<stack>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
stack<long long>sta;
long long a;
scanf("%lld",&a);
sta.push(a);
char ch;
while(scanf("%c",&ch)!=EOF&&(ch=='+'||ch=='-'))
{
long long b;
scanf("%lld",&b);
if(ch=='-')
{
b=-b;
sta.push(b);
}
else
sta.push(b);
}
long long sum=0;
while(!sta.empty())
{
sum+=sta.top();
sta.pop();
}
printf("%lld\n",sum);
}
return 0;
}</span>
不知道为什么这个代码死活过不了,感觉这个更简单,但是会超时,很奇怪
<span style="font-size:18px;">#include<cstdio>
int main()
{
int t;
scanf("%d",&t);
long long a,b;
char ch;
while(t--)
{
scanf("%lld",&a);
while(1)
{
if(ch=='\n')
break;
scanf("%lld",&b);
if(ch=='-')
a=a-b;
else
a=a+b;
}
printf("%lld\n",a);
}
return 0;
}
</span>