Pagini recente » Cod sursa (job #3163406) | Cod sursa (job #1532448) | Istoria paginii runda/simulareeeee | Cod sursa (job #256966) | Cod sursa (job #255031)
Cod sursa(job #255031)
#include <stdio.h>
using namespace std;
int e[28], n, i, j, k, l, r;
char v[1200], ch;
int expresie();
int termen();
int factor();
int expresie()
{
int rez = termen();
while(v[l]=='O' && v[l+1]=='R')
{
l+=3;
rez = rez | termen();
}
return rez;
}
int termen()
{
int rez = factor();
while(v[l]=='A' && v[l+1]=='N' && v[l+2]=='D')
{
l+=4;
rez = rez & factor();
}
return rez;
}
int factor()
{
int rez=0;
if(v[l]=='N' && v[l+1]=='O' && v[l+2]=='T')
{
l+=4;
rez = factor();
return !rez;
}
if(v[l]=='(')
{
l++;
rez = expresie();
l++;
}
else
if(v[l]=='T' && v[l+1]=='R' && v[l+2]=='U' && v[l+3]=='E')
{
l+=5;
rez=1;
}
else
if(v[l]=='F' && v[l+1]=='A' && v[l+2]=='L' && v[l+3]=='S' && v[l+4]=='E')
{
l+=6;
rez=0;
}
else
{
rez=e[ v[l] - 'A' ];
l+=2;
}
return rez;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
n=1;
scanf("%c", &v[n]);
while(v[n]>=32)
{
n++;
scanf("%c", &v[n]);
}
for(i=0; i<=26; i++)
{
e[i]=0;
}
scanf("%d\n", &k);
for(i=1; i<=k; i++)
{
scanf("%c", &ch);
e[ch-'A'] = e[ch-'A'] ^ 1;
l=1;
r=expresie();
printf("%d", r);
}
printf("\n");
return 0;
}