Pagini recente » Istoria paginii utilizator/claudiu_stefan | Istoria paginii utilizator/contreal | Atasamentele paginii incalzire | Istoria paginii utilizator/remusdc11 | Cod sursa (job #1008090)
#include <cstdio>
using namespace std;
char a[1005], cg[104], *p;
int val[30];
int termen();
int factor();
int eval()
{
int ret=termen();
while(*p=='O'&&*(p+1)=='R')
{
p+=3;
ret|=termen();
}
return ret;
}
int termen()
{
int ret=factor();
while(*p=='A'&&*(p+1)=='N')
{
p+=4;
ret&=factor();
}
return ret;
}
int factor()
{
int ret=0;
if(*p=='(')
{
p++;
ret=eval();
p++;
}
else if(*p=='N'&&*(p+1)=='O')
{
p+=4;
ret=!factor();
}
else if(*p=='T'&&*(p+1)=='R')
{
p+=5;
ret=1;
}
else if(*p=='F'&&*(p+1)=='A')
{
p+=6;
ret=0;
}
else
{
ret=val[*p-'A'];
p+=2;
}
return ret;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
int n, i;
fgets(a, 1005, stdin);
scanf("%d\n", &n);
fgets(cg+1, 105, stdin);
for(i=1;i<=n;i++)
{
val[cg[i]-'A']=1-val[cg[i]-'A'];
p=a;
printf("%d", eval());
}
}