Pagini recente » Cod sursa (job #726589) | Cod sursa (job #940129) | Cod sursa (job #534868) | Cod sursa (job #2212938) | Cod sursa (job #1274979)
#include <fstream>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[1002],x;
int n,i,j;
int v[256];
int solve();
int termen(){
int r=0;
if(s[i]=='('){
i++,r=solve(),i++;
}else if(s[i]=='N' && s[i+1]=='O'){
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
r=1-(termen());
}else if(s[i]=='T' && s[i+1]=='R'){
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
r=1;
}else if(s[i]=='F' && s[i+1]=='A'){
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
r=0;
}else{
r=v[s[i]];
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
}
return r;
}
int factor(){
int r=termen();
while(s[i]=='A' && s[i+1]=='N'){
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
r=r&termen();
}
return r;
}
int solve(){
int r=factor();
while(s[i]=='O' && s[i+1]=='R'){
while(s[i]>='A' && s[i]<='Z')
i++;
i++;
r=r|factor();
}
return r;
}
int main(){
fin.get(s,1002);fin.get();
fin>>n;
for(j=1;j<=n;j++){
fin>>x;
v[x]=1-v[x];
i=0;
fout<<solve();
}
fin.close();fout.close();
return 0;
}