点击打开题目
Time Limit: 1 Sec Memory Limit: 128 MB Submit: 442 Solved: 105 Submit Status Web Board
别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来。
首先是一个t(1<=20)表示测试组数。然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1。
输出运算结果。
2
1+1
2+1-1
2
2
zzuli
模拟计算机,只有加减,用longlong存。
代码如下:
#include <stdio.h>
#include <cstring>
#include <algorithm>
using namespace std;
#define CLR(a,b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define LL long long
int main()
{
int u;
char a[211];
scanf ("%d",&u);
LL ans;
LL num;
while (u--)
{
scanf ("%s",a);
int l = strlen(a);
ans = 0;
int i,j;
for (i = 0 ; i < l ; i++)
{
if (a[i] == '+' || a[i] == '-')
break;
ans = ans * 10 + (a[i] - '0');
}
for ( ; i < l ; i++)
{
num = 0;
for (j = i + 1 ; j < l ; j++)
{
if (a[j] == '+' || a[j] == '-')
break;
num = num * 10 + (a[j] - '0');
}
if (a[i] == '+')
ans += num;
else
ans -= num;
if (j == l)
break;
else
i = j-1;
}
printf ("%lld\n",ans);
}
return 0;
}