Calculate the expression
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 686 Accepted Submission(s): 346
Problem Description
You may find it’s easy to calculate the expression such as:
a = 3
b = 4
c = 5
a + b + c = ?
Isn’t it?
a = 3
b = 4
c = 5
a + b + c = ?
Isn’t it?
Input
The first line contains an integer stands for the number of test cases.
Each test case start with an integer n stands for n expressions will follow for this case.
Then n – 1 expressions in the format: [variable name][space][=][space][integer] will follow.
You may suppose the variable name will only contain lowercase letters and the length will not exceed 20, and the integer will between -65536 and 65536.
The last line will contain the expression you need to work out.
In the format: [variable name| integer][space][+|-][space][variable name| integer] …= ?
You may suppose the variable name must have been defined in the n – 1 expression and the integer is also between -65536 and 65536.
You can get more information from the sample.
Each test case start with an integer n stands for n expressions will follow for this case.
Then n – 1 expressions in the format: [variable name][space][=][space][integer] will follow.
You may suppose the variable name will only contain lowercase letters and the length will not exceed 20, and the integer will between -65536 and 65536.
The last line will contain the expression you need to work out.
In the format: [variable name| integer][space][+|-][space][variable name| integer] …= ?
You may suppose the variable name must have been defined in the n – 1 expression and the integer is also between -65536 and 65536.
You can get more information from the sample.
Output
For each case, output the result of the last expression.
Sample Input
3 4 aa = 1 bb = -1 aa = 2 aa + bb + 11 = ? 1 1 + 1 = ? 1 1 + -1 = ?
Sample Output
12 2 0
Author
dandelion
Source
Recommend
lcy
模拟题,可以用STL简化过程。
#include<iostream>
#include<string>
#include<map>
using namespace std;
map<string,int>Map;
int main()
{
int cas,i,n,sum;
cin>>cas;
while(cas--)
{
Map.clear();
string a,op;
int b;
scanf("%d",&n);
for(i=0;i<n-1;i++)
{
cin>>a>>op>>b;
Map[a]=b;
}
cin>>a>>op;
sum=0;
if(a[0]=='-'||(a[0]>='0'&&a[0]<='9'))
sum+=atoi(a.c_str());
sum+=Map[a];
while(op!="=")
{
cin>>a;
if(a[0]=='-'||(a[0]>='0'&&a[0]<='9'))
{
if(op=="+")sum+=atoi(a.c_str());
else sum-=atoi(a.c_str());
}
else
{
if(op=="+")sum+=Map[a];
else sum-=Map[a];
}
cin>>op;
}
cin>>op;
cout<<sum<<endl;
}
return 0;
}