1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <cstdio>
int n, in, t[100], naw, wynik, akt, suma;
char c[1000111], cg;
bool odw, dasie;
int main()
{
	scanf("%d", &n);
	cg=getchar();
	while(cg!=-1)
	{
		in++;
		c[in]=cg;
		cg=getchar();
	}
	for(int i=0; i<=1<<n; i++)
	{
		dasie=true;
		suma=0;
		int x=i;
		for(int j=1; j<=n; j++)
		{
			if(x%2==1)t[j]=1;
			else t[j]=0;
			x/=2;
		}
		for(int j=1; j<=in; j++)
		{
			if(c[j]==')')
			{
				if(suma==0)dasie=false;
				suma=0;
				continue;
			}
			if(c[j]=='x')
			{
				if(c[j-1]=='~')odw=1;
				else odw=0;
				akt=c[j+1]-'0';
				if(c[j+2]>='0'&&c[j+2]<='9')akt=akt*10+c[j+2]-'0';
				akt=t[akt];
				if(odw==true)akt=(akt+1)%2;
				suma+=akt;
			}
			
		}
		if(dasie)wynik++;
	}
	printf("%d\n", wynik);
	return 0;
}