100,100,10。
跪求第三题解法
第二题AC代码
#include <iostream>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
#include <vector>
#include <list>
#include <stack>
#include <string>
#include <set>
#include <queue>
#include <climits>
#include <unordered_set>
#include <map>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <unordered_map>
#include <map>
using namespace std;
typedef long long LL;
const LL mod = 1000000007;
using namespace std;
const int inf = 0x7f7f7f7f;
#define _for(i,l,r) for(int i=(l);i<(r);i++)
int dir[4][2] = {{0,1},{1,0},{-1,0},{0,-1}};
map<string,int> is;
map<string,int> val;
char s[10000];
int main(){
int n;
scanf("%d\n",&n);
string ans_tmp;
_for(j,0,n){
gets(s);
int s_len = strlen(s);
int i = 0;
vector<string> var;
var.clear();
while(i < s_len){
while(i< s_len && s[i] ==' ') i++;
if(i == s_len) break;
char v[10000];
int v_len = 0;
int pre = i;
while(i< s_len && (s[i] != '=' && s[i] != '+')) i++;
while(i>=1 && s[i - 1] == ' ') i--;
for(int k = pre; k < i ;k++){
v[v_len++] = s[k];
}
v[v_len] = '\0';
string tmp(v);
var.push_back(tmp);
while(i<s_len && s[i] == ' ') i++;
i++;
}
int sum = 0;
int flag = 0;
for(int q=1;q<var.size();q++){
if(var[q][0] >='1' && var[q][0] <= '9'){
string tmp = var[q];
int ans = 0;
for(int p = 0;p<tmp.size();p++){
ans = ans * 10 + tmp[p] - '0';
}
sum += ans;
continue;
}
if(var[q][0] == '-'){
string tmp = var[q];
int ans = 0;
for(int p = 1;p<tmp.size();p++){
ans = ans * 10 + tmp[p] - '0';
}
sum += -ans;
continue;
}
if(is[var[q]] == 1){
sum += val[var[q]];
continue;
}
if(is[var[q]] == 0){
flag = 1;
break;
}
}
ans_tmp = var[0];
if(flag == 0){
is[var[0]] = 1;
val[var[0]] = sum;
}
}
if(!is[ans_tmp]){
cout <<"NA"<< endl;
}
else{
cout << val[ans_tmp]<< endl;
}
return 0;
}